用 WSL 做开发的这一年

从 Windows 到 Linux 再到 WSL,一个开发者的环境折腾史。

为什么开始用 WSL

2019 年我第一次听说 WSL 的时候,没当回事。在 Windows 上装个 Linux 子系统有什么用?想要 Linux 直接装双系统或者跑个虚拟机不就行了?

那时候我还在用虚拟机跑 Ubuntu,每次开虚拟机都要等好几分钟,内存分 4GB 出去,Windows 这边就卡得不行。而且最烦人的是文件共享——从 Windows 往虚拟机里拷文件,要么开共享文件夹,要么 scp,要么搞个 git 仓库来回推拉。折腾。

后来换了台新电脑,决定试试 WSL2。装上之后第一感觉是:快。真的快。`wsl --install` 一行命令,几分钟后 Ubuntu 就在跑了,不需要装 ISO、分区、配引导。而且文件 IO 比 WSL1 快太多,因为在虚拟机里跑真正的 Linux 内核。

真香的地方

1. 开发工具链直接在 Linux 上跑

不需要在 Windows 上装各种开发工具了。Python、Node、Go、Rust —— 全在 WSL 里装。项目文件也放在 WSL 的文件系统里(`/home/username/projects/`),IO 性能比放在 `/mnt/c/` 下好很多。

VS Code 的 Remote-WSL 扩展解决了编辑器的问题:在 WSL 的终端里 `code .` 就能打开 VS Code,而且 VS Code 会自动在 WSL 里装一个 server,插件、终端、调试器都跑在 Linux 环境里。你甚至感觉不到在两个系统间切换。

# 在 WSL 里装好 Node
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# 直接 code . 打开 VS Code
cd ~/projects/my-app
code .

2. 真实的 Linux 环境

WSL2 跑的是真正的 Linux 内核(微软自己维护了一个定制版,在 GitHub 上开源)。这就意味着:你能用 systemd、能装 Docker、能跑任何 Linux 软件。跟真正的 Ubuntu Server 几乎没有区别。

唯一需要注意的是网络——WSL2 的网络是 NAT 模式,跟宿主机不在同一个网段。不过大部分情况下你不需要关心这个,VS Code 和其他工具会自动处理好。

3. Windows 的资源不必放弃

有些东西还是 Windows 方便。比如 Office、微信、设计工具(Figma 网页版也行但偶尔我还是用桌面版)。不用切系统,一个 Windows 全搞定。开发在 WSL 里,办公在 Windows 上,互不干扰。

踩过的坑

当然不是一帆风顺。

文件放哪? 项目文件一定放 WSL 文件系统(`~/projects/`),不要放 `/mnt/c/`。跨文件系统 IO 慢 5-10 倍,而且 `chmod` 不工作、符号链接出问题。

代理配置。 WSL 的网络跟 Windows 是隔离的。如果你 Windows 上跑了代理(Clash、V2Ray 之类的),WSL 里需要手动设置 `HTTP_PROXY` 环境变量。我写了个脚本在 `.bashrc` 里自动检测 Windows 的代理端口。

Docker 配置。 Docker Desktop for Windows 可以集成 WSL2 后端,这样 Docker 在 WSL 里跑起来飞快。但如果你用 Docker 命令行,记得在 WSL 里也装一份 Docker CLI,不然两个环境下的 Docker 上下文会混淆。

一个小技巧:在 WSL 里 `export DOCKER_HOST=unix:///var/run/docker.sock` 就可以直接用 WSL 里的 Docker daemon 了。

一年之后

现在我已经完全适应了 WSL 的工作流。桌面还是 Windows,但 90% 的开发工作都在 WSL 的终端里完成。不是 WSL 完美,而是它恰好解决了我的问题:既要 Linux 的开发环境,又不想放弃 Windows 的桌面生态。

如果让我回到一年前,我会跟自己说:早点装。


这篇文章写于 2026 年 5 月。文中提到的工具版本可能已经更新。