WSL on Windows 10

Windows Subsystem for Linux是Win10原生支持的Linux子系统,可以在其上运行GNU用户空间。大部分情况下Linux内核调用会通过相应的驱动映射到对应的Windows内核调用,但同时也有可能缺乏对应的Windows内核调用。因此WSL本身在使用上有一定的限制。也因此WSL并不是运行在Windows上的“虚拟机”,Linux命令可以像Windows应用程序一样访问本地主机,无需使用虚拟化的网络。

目前WSL上可以运行Bash shell和命令语言、命令行工具、编程语言解释器甚至是图形应用程序等。同时也存在一些问题:如朋友反应无法运行docker;自己也遇到某些情况下sudo无法正常使用的情况。并不能完全把WSL当作Linux来进行使用。

但是,

作为一个写不惯CMD和PowerShell的虚假软粉,能够在自己喜欢的桌面系统中同时使用比较熟悉的linux操作,是一种双倍的快乐。再加上Windows本身丑到不行的CMD界面,我更想找一个替代品(Windows Terminal还在alpha版本,只能慢慢等了)。

WSL安装

安装比较简单。在Windows Store里搜索WSL就可以了。商店里现在提供的Linux版本有Ubuntu,Debian,Kali Linux,SUSE Linux Enterprise Server。我选择了我比较熟悉的Ubuntu。值得一提的是,WSL最初即是由Microsfot与Canonical合作开发的。

需要注意的是,在初始化WSL之前,你需要在windows feature中把WSL选项勾上,重启之后才能开始设置WSL。

优雅WSL

默认的Ubuntu源可能因为网络原因会较慢,可以自行切换为国内源,加速软件包的下载速度。

安装之后就会有Windows为WSL准备的默认终端,默认的字体是宋体。

网上有很多关于第三方终端来提升Windows下终端的体验,比如Hyper,Terminus,Fluent Terminal等等,在美观方面都碾压默认的WSL终端。我都有进行过尝试,被性能劝退了。特别是Hyper,Terminus这两款基于Electron的终端,使用起来让我有点怀疑自己笔记本的配置是不是假的。

最终我决定使用默认的WSL终端,但是实在是原生的太难看了,特别是宋体的加持,让人目不忍视。

首先要搞定的就是字体问题。Windows默认终端是一个较为底层的应用,没有使用通用UI渲染层。终端默认状态下可选的字体较少,需要安装额外的字体。我目前使用的是Sarasa Gothic,选择的是Sarasa Mono T SC这一等宽字体。

解决掉字体问题,当然是直接上手广为人知的zsh & oh-my-zsh

1
2
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

oh-my-zsh主题我比较喜欢酷炫的Powerlevel9k

配置好之后的界面大概就是这个样子:

此时,右键menu bar->properties->Colors->Opacity调整到自己喜欢的程度,为其注入灵魂(大雾):

Tips

到此基本的配置就完成了。可能有些时候会出现与上述图片不符的情况,这可能是各种各样的原因引起的。本人是在Windows 10 English环境下进行的相关配置,同时参考了Dev on Windows with WSL做了一些修改。

因为有现成的文章描述,更多的细节也就不描述了,这里说一些比较重点的部分。

ls后背景色问题

可能很多人会发现lscd命令,会出现非常违和的后背景色。是因为WSL文件系统的权限问题,Windows原有NTFS文件系统中的文件到WSL下权限全部变成0777。

想要从根本上解决此问题,就需要解决WSL下的权限问题。

  • 在WSL中创建/etc/wsl.conf
    1
    2
    3
    4
    5
    [automount]
    enabled = true
    root = /mnt/
    options = "metadata,umask=22,fmask=111"
    mountFsTab = true
  • 重启终端即可
执行Windows命令

是的,WSL可以直接执行CMD命令。当然,要加上.exe才行。

相关阅读推荐

想要水这篇Blog的时候,看了一些相关的文章,因为懒的缘故,并没有一一在这里介绍。有兴趣的读者可以浏览以下相关文章。