WSL

cmder 在 Win10 WSL 下粘贴丢字符的解决

Win10 升级到 1803 后,用 cmder 连的 bash,粘贴文本时总丢大量字符,怀疑某些部分被识别成了控制字符或怎样。一开始以为是 WSL 的问题,不过后面交叉验证,发现如果用 cmder 开 Windows 命令行,或直接在 Windows 命令行下运行 bash 就没事。翻了好久,终于在 ConEmu 项目下找到相关讨论,作者最近认可了这个问题并发布了更新:https://github.com/Maximus5/ConEmu/issues/1545#issuecomment-386444227

因为 cmder 就是封装了一下 ConEmu,所以去 https://github.com/Maximus5/ConEmu/releases/tag/v18.05.06 下载最新的 180506 版本 ConEmu,并解压到 cmder 目录的 cmder\vendor\conemu-maximus5 下替换原来的文件就好

WSL 下一些奇怪的路径依赖问题优化

在公司换用 Windows 做开发机,装了 Windows Subsystem for Linux(WSL),也就是那个 Ubuntu,用来跑开发环境

我的代码放在 Windows 的文件系统里,在 WSL 里通过 ln -s /mnt/c/foo ~/foo 的方式映射过去,不过在跑 yarn 装 node modules 的时候,会经常出现路径依赖的错误,大概就是 /mnt/c/xxxxx 这样的路径在计算父目录或子目录时会出问题

另外我跑 Docker,是使用 Docker for Windows 作为宿主,在 WSL 里装 Linux 的 Docker 客户端做控制,跑 docker-compose 总是发现挂载不上开发目录到文件系统,最后看了下是 WSL 默认的 /mnt/c/ 这样的挂载点识别有问题

最后按某些野路子方法,把 WSL 访问宿主机的入口调整为 /c/ 这样就好了

$ sudo mkdir /c
$ sudo mount --bind /mnt/c /c

不过这有个问题是重启后需要重新挂载,之前有按别的一些处理方式写到 /etc/fstab 文件表里,但是 WSL 不支持自动加载,所以按 https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly 的提示来加到 ~/.bashrc 里或我的 ~/.zshrc 里,并把 /bin/mount 改成所有用户都可启用

$ echo "sudo mount --bind /mnt/c /c" >> ~/.bashrc && source ~/.bashrc
$ sudo echo "yourname ALL=(root) NOPASSWD: /bin/mount" >> /etc/sudoers

注 1:yarn 的问题似乎现在在 /mnt/c/foo 这样的目录结构下工作正常了,不确定是不是 yarn 升级处理了这个问题