在公司换用 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 升级处理了这个问题