用了一段时间后,觉得 WSL 比较鸡肋,没有太多意义。考虑到已经有 Linux 系统做日常开发,不应该再使用 Windows 做开发,因此不要使用 WSL。
按功能做了表格:
功能点 | 子功能 | WSL 上能力 | Windows 上能力 |
---|---|---|---|
GNU 工具链 | coreutils 包 | scoop install coreutils | |
方便的包管理工具 | pacman | scoop | |
编程语言包 | 有 | 有 | |
后台程序 (Consul / MySQL / Nginx) | 有 | 有 | |
SSH 及相关配置 | 原生支持 | 优良支持 | |
好用的终端 (zsh / oh-my-zsh) | 原生支持 | Windows Terminal 体验尚可 | |
配置同步(yadm) | 原生支持 | 不支持(不是太重要) | |
开发 Linux 相关程序 | 原生支持 | 不支持 | |
启动 TiddlyWiki | tw shell alias | tw.ps1 script |
大部分需求点,有不错的 Windows 替代解决方案,或者这个能力并不是非有不可。WSL 上的 shell 有一些自定义的脚本、功能,比如 z
(autojump)、with-proxy-env
这些东西要找 Windows 上的对应方案还是有成本的。
另外 WSL 还有一些缺陷:
- 性能太差:参考这篇 帖子,WSL 的性能居然比虚拟机还差。我在使用时也明显感受到慢,比如 zsh 很多 theme,会在你 cd 进一个目录时去拿 git 信息,这个过程卡得不行。所以你想用 WSL 编译一些中型以上的程序,很可能是不行的
- 没法用 systemd:由于 WSL 并不是运行在一个真正 boot 起来的系统,systemd 是不能用的,意味着一些之前由 systemd service 做的事情,你得手动做。比如启动 TiddlyWiki。(不过这个也可以通过脚本来做)
- 涉及底层的操作做不了:比如你没法用 tcpdump 抓包
Scoop 的出现很大程度上解决了问题。感谢 Scoop。