
WSL (Windows Subsystem for Linux)
什么是 WSL,这有详细的介绍以及文档。
简单总结一下
- 微软公司开发的一种兼容层;
- 主要目的是提供一个兼容的 Linux 环境,使开发者可以在 Windows 上使用 Linux 工具和命令行界面,而无需设置和维护虚拟机或双系统启动;
- 工作原理是将 Linux 内核集成到 Windows 操作系统中,通过虚拟化技术来模拟 Linux 环境。
为什么是 WSL + Docker
在 Winddows 中,运行 Linux 发行版有 WSL、虚拟机、Docker 等多种方式。从启动方式,性能,开发环境(IDE)支持,WSL 都是首选,同样也拥有着广泛的社区资源。
虚拟机的启动时间过长,存储空间过大,以及它需要更多的系统资源等等,将我劝退了。
Docker 有一个巨大的优势:不会出现『在我的机器上可以运行』,这点就足以让我喜欢它了。
WSL 允许用户在 Windows 系统中无缝运行 Linux 发行版,开发环境(IDE)支持,启动速度快,对于系统性能的影响也比较小。
因为开发环境(IDE)的支持 + Dokcer 的支持,可以让我无限的接近于服务器的环境下进行开发,所以选择了 WSL + Docker
简单列了 WSL 和 Docker 的情况,它们各有所长,更重要的还得是你自己的需求与偏好
WSL | Docker |
---|---|
在 Windows 环境下直接运行 Linux 发行版 | 需要开启 Docker 后再开启容器 |
直接在 Windows 文件系统中访问文件,也可以在 Windows 和 Linux 之间共享剪贴板内容 | 通过启动时共享文件 |
想要在除了 Windows 环境下运行相对比较麻烦 | 可以在不同的环境下进行部署运行,保持一致的运行环境,不需要受到底层操作系统的影响 |
适合需要在 Windows 环境下直接运行 Linux 命令行工具和应用程序的开发者 | 适合于微服务架构和复杂的容器编排场景 |
WSL 和 WSL 2
官方推荐使用 WSL 2,因为它提供更快的性能和 100% 的系统调用兼容性。WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用,还有一个 例外情况(使用 WSL 1 而不是 WSL 2) 。 WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。更详细的对比 可以点开看看。
搭建 WSL 2 环境
一步到位
Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 可以直接运行
bash
wsl --install
此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能,再根据提示进行下一步,最后这个环节就结束了!可以直接进行下一个环节。😄
手动安装步骤
-
启用适用于 Linux 的 Windows 子系统
以管理员身份打开 PowerShell,然后输入以下命令
bashdism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
-
具体的可以查看链接 检查运行 WSL 2 的要求
-
启用『虚拟机平台』功能。
前面也说过『工作原理是将 Linux 内核集成到 Windows 操作系统中,通过虚拟化技术来模拟 Linux 环境』。运行以下命令,来开启『虚拟机平台』功能:
bashdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动计算机,以完成 WSL 安装并更新到 WSL 2。
-
下载 Linux 内核更新包
如果不确定自己计算机的类型,或许这条命令对你有所帮助:
bashsysteminfo | find "System Type"
下载完后,别告诉我你忘记运行安装了 😂 。
-
将 WSL 2 设置为默认版本
执行这条命令
wsl --set-default-version 2
,设置 WSL 2 为默认版本。 -
安装所需的 Linux 发行版
有多种方式可以进行安装
- 打开 Microsoft Store,搜索你需要的 Linux 发行版进行安装。
- 在命令行输入
wsl --list --online
,然后再执行wsl --install -d <Distribution Name>
, 是你需要安装的 Linux 发行版
这里就按照 Ubuntu 进行安装了,因为默认是安装 Ubuntu 发行版,所以直接运行
wsl --install
就可以了。

安装完成后会自动启动,这时需要为新安装的 Linux 发行版创建一个账号,然后会以这个账号进行登录。

wsl --list --verbose
可以查看你当前已经安装的 Linux 发行版,以及其当前状态是什么,运行的 WSL 版本是多少。
那么到此处就已经搭建好 WSL 2 环境了!
迁移 Linux 发行版到其他位置(可选)
默认情况下,会安装在系统盘(C 盘)中,而你的系统盘(C 盘)的空间有限,随着子系统的使用,占用的空间会越来越大,最后就有可能系统盘(C 盘)空间不足导致子系统崩溃。
-
列出所有可用的 Linux 发行版
bashwsl -l --all -v
-
停止运行你要迁移的 Linux 发行版(重要)
bashwsl -t <Distribution Name> # wsl -t Ubuntu
当 Linux 发行版未停止时,就开始进行导出,那么有可能会导致数据的丢失,或者是产生不可预测的情况发生。
-
导出 Linux 发行版
bashwsl --export <Distribution Name> <FileName> # wsl --export Ubuntu F:\WSL\Ubuntu.tar # 以下仅 WSL 2 的情况下支持 # wsl --export Ubuntu F:\WSL\Ubuntu.vhdx
这两种导出格式都可以,但是
vhdx
仅在 WSL 2 的版本下支持 -
卸载 Linux 发行版
执行这一步一定要注意,已经完整的导出需要卸载的 Linux 发行版,此操作为不可撤销行为!
bashwsl --unregister <DistributionName> # wsl --unregister Ubuntu
-
导入 Linux 发行版
bashwsl --import <Distribution Name> <InstallLocation> <FileName> # wsl --import Ubuntu F:\WSL\Ubuntu F:\WSL\Ubuntu.tar # wsl --import Ubuntu F:\WSL\Ubuntu F:\WSL\Ubuntu.vhdx
<Distribution Name>
Linux 发行版的名称<InstallLocation>
Linux 发行版数据镜像文件存放的文件夹路径<FileName>
导出的备份文件路径
-
设置默认 Linux 发行版
当你还是想要将这个 Linux 发行版设置为默认启动项时,可以执行此命令
bashwsl --set-default <Distribution Name> # wsl --set-default Ubuntu
-
设置登录账号
当迁移之后,默认会使用 root 账号进行登录,并非是初始安装是设置的账号进行登录的,所以这个时候需要进行修改登录账号
bash<DistributionName> config --default-user <Username> # Ubuntu config --default-user administrator
此命令仅可设置已存在的账号,否则会被提示
id: 'admin': no such user
到此迁移单个 Linux 发行版就结束了
Zsh(Z Shell)是一个强大的替代 Shell(可选)
在 Linux 中,默认的 Shell 是 Bash(Bourne Again Shell),而 Zsh(Z Shell)是作为一种功能强大的替代品,为用户提供了更多特性和定制选项。
Zsh 的出现是为了弥补传统 Unix Shell 的一些不足,并提供更多的功能和改进。
todo: 在此处可以贴一张对比图,bash 的命令行界面和 zsh 安装插件后的命令行界面
安装并使用 Zsh
-
使用包管理器安装 Zsh。在大多数 Linux 发行版中,你可以使用以下命令来安装 Zsh:
bashsudo apt install zsh # Ubuntu/Debian # sudo yum install zsh # CentOS/RHEL # sudo dnf install zsh # Fedora
-
安装完成后,使用以下命令验证是否安装成功
bashzsh --version
-
使用以下命令,设置 Zsh 为默认使用 Shell:
bashchsh -s $(which zsh)
设置完成后,就可以重启了。
-
重启后,你会发现这个命令行界面,这是告诉你 Zsh 为新用户提供的配置功能,因为你没有 Zsh 启动文件,在这里可以不用管它,因为接下来会使用 Oh My Zsh 进行配置,所以这里直接输入
q
即可。
Oh My Zsh
Oh My Zsh 是一个开源项目,为 Zsh 提供了一个强大的框架,用于管理 Zsh 的配置和插件。一句话解释就是:它能配置巨强大的插件和巨漂亮的主题!
-
安装 Oh My Zsh
可以执行以下某行命令来进行安装,具体看你的 Linux 发行版安装了哪个网络操作工具
bashsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
正常情况都是会超时的,当然会有特殊情况了😜,超时了没关系,以下某行命令可以解决你的问题
bashsh -c "$(curl -fsSL https://install.ohmyz.sh/)" # sh -c "$(wget -O- https://install.ohmyz.sh/)" # sh -c "$(fetch -o - https://install.ohmyz.sh/)"
安装完成后,就可以开始配置巨强大的插件和巨漂亮的主题了!
-
漂亮的主题
进入到内置主题目录下
cd ~/.oh-my-zsh/themes
,你能查看到如下上百个内置主题当你想要使用其他主题时,
vim ~/.zshrc
,从中找到默认值ZSH_THEME="robbyrussell"
替换成你想要使用的主题,例如:ZSH_THEME="kennethreitz"
,主题文件名即可,后缀不需要了,替换完成后需要执行source ~/.zshrc
,重新打开 WSL 即可看到配置的主题看了一下 What's the best theme for Oh My Zsh? 这个排名,我发现了 TOP 1 是真的不错,强烈推荐🥳
下载安装使用试试吧!
bashgit clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # 中国用户可以使用 gitee.com 上的官方镜像加速下载 # git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
然后在
~/.zshrc
设置ZSH_THEME="powerlevel10k/powerlevel10k"
,别忘了source ~/.zshrc
,当执行完这一条命令时,你就需要根据提示进行下一步,就可以配置成功了。 -
强大的插件
要使用安装好的插件,需要编辑
vim ~/.zshrc
文件,找到plugins=(git)
这里是已经开启了git
插件。当需要增加其他的插件时,将plugins=(git web-search)
即可,注意『使用空格去区分不同的插件』!配置完成后记得执行
source ~/.zshrc
让你的配置生效!web-search
这个插件可以使用默认的浏览器进行打开搜索,直接在命令行输入bashbaidu 天气预报
这里就推荐两个我觉得不错的插件,还有更多的插件可以去 awesome-zsh-plugins 这里看看!
-
zsh-syntax-highlighting
zsh-syntax-highlighting 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。
~/.oh-my-zsh/custom/plugins
这个是插件的安装目录,输入下面的命令可以直接进行安装:bashgit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
看看效果图吧
-
zsh-autosuggestions
zsh-autosuggestions 是一个命令提示插件,当你输入命令时,会自动推测你可能需要输入的命令,按下按键
→
可以快速采用建议。~/.oh-my-zsh/custom/plugins
这个是插件的安装目录,输入下面的命令可以直接进行安装:bashgit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
看看效果图吧
-
到这 Zsh 就已经安装完成了,但是要注意,这是你当前登录的用户上存在的,而要在 root 用户或者是其他用户下也使用,那就需要进行重新配置,建议配置不同的主题来区分不同的用户。
Docker
Docker 是一种工具,使用容器进行创建、部署和运行应用程序。 容器使开发人员可以将应用与需要的所有部件(库、框架、依赖项等)打包为一个包一起交付。这就不会造成『在我的机器上可以运行』,非常 nice 👍
安装与配置
下载链接 贴在这里了,下载好后,直接开始安装,按照默认选项就可以了。
安装完成启动后,打开设置界面 -> 常规,选中使用基于 WSL 2 的引擎

然后在资源 -> WSL integration,启用已安装的 WSL 2 发行版

保存后,进入选择的 WSL 2 发行版,输入以下命令,来检测是否安装正常工作
bash
docker run hello-world
看到以下界面就是成功了!

在命令行中输入
wsl -l -v
,你能看到多出来两个 Docker 的桌面发行版,默认是安装在C:\Users\当前用户名\AppData\Local\Docker\wsl
,如果你需要移动到其他位置,可以看看上面的 [迁移 Linux 发行版到其他位置(可选)](#迁移 Linux 发行版到其他位置(可选) "#%E8%BF%81%E7%A7%BB%C2%A0Linux%C2%A0%E5%8F%91%E8%A1%8C%E7%89%88%E5%88%B0%E5%85%B6%E4%BB%96%E4%BD%8D%E7%BD%AE%EF%BC%88%E5%8F%AF%E9%80%89%EF%BC%89")
VS Code
安装与配置
下载链接 贴在这里了,下载好后,开始安装,记得要选中『添加到 PATH』选项,这样就方便在 WSL 中直接使用命令 code .
打开文件夹。

安装完成后,直接打开这个 链接 进行安装 VS Code 扩展,里面包含了以下扩展
- Remote - SSH 使用 SSH 打开远程机器/虚拟机上的文件夹,在任何位置处理源代码。
- Remote - Tunnels 使用 VS Code Tunnel(而不是 SSH)打开远程机器/虚拟机上的文件夹,在任何位置处理源代码。
- Dev Containers 通过打开挂载到容器中或容器内的任何文件夹,使用单独的工具链或基于容器的应用程序。
- WSL 通过打开 WSL 中的任何文件夹,从 Windows 中获得舒适的 Linux 开发体验。

安装完成后,打开方式也有多种
- 在 WSL 中,使用
code .
,将会使用 VS Code 打开当前文件夹

- 左下角,点击打开远程窗口,选择『连接到 WSL』

它是使用默认登录账号进行打开文件夹,所以对于文件的权限需要注意!
到这,整篇就结束啦!