什么是WSL?

Windows Linux子系统(WSL)是Windows 10中的一种环境,用于以类似于LinuxContainers的方式运行未修改的Linux二进制文件。Windows Linux子系统使开发人员可以直接在未经修改的Windows上运行GNU / Linux环境,包括大多数命令行工具,实用程序和应用程序,而不会增加虚拟机的开销,随window启动,随时可用,并且可以直接访问Window文件,非常方便。

WSL安装

首先声明环境为 Windows10 1909 --18363.476

在安装用于WSL的任何Linux发行版之前,必须确保启用适用于Linux的Windows子系统可选功能:

以管理员身份打开PowerShell并运行:

1
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

出现提示时,请重新启动计算机。

Microsoft Store安装,本人安装的是Ubuntu 18.04 LTS。然后选择您喜欢的Linux发行版。

安装完成后首次打开会要求设置账户和密码,设置完成即可使用。注意:账户好像只能小写。

WSL配置

设置从Windows Terminal打开wsl时进入Linux用户主目录

当直接通过Windows Terminal的标题栏打开wsl时,默认会进入windows的用户目录,而这明显不属于Linux的目录结构,无法使用Linux的读写特性。

解决方法

确定commandline

在微软商店(Windows Store)中找到你当初安装的Linux发行版,从“简介->更多”中找一下启动命令。

例如:Ubuntu 是 ubuntu, Ubuntu18.04是 ubuntu1804, Ubuntu20.04是 ubuntu2004

打开配置文件

通过“设置”,打开Windows Terminal的配置文件。

在配置文件的profiles->list中找的你的Linux发行版,添加一行commandline:

1
"commandline": "ubuntu2004"

配置sudo免密

备份sudo文件

1
sudo cp /etc/sudoers sudoers20191128

注意,此文件只能用vi编辑

先尝试使用visudo编辑sudoers

1
sudo visudo

如果以上指令失败则使用vi打开编辑

1
sudo vi /etc/sudoers

找到 root ALL=(ALL:ALL) ALL,在下边添加:

1
lijian ALL=(ALL:ALL) NOPASSWD: ALL

如果要让所有sudo指令免密,修改:

1
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

注意:用户名后是tab,不是空格

重新登录测试

1
sudo ls

如果不提示输入密码则配置成功。

linux ubuntu-20.04 su root 命令 认证失败

解决方式:更新密码即可。

1
2
3
4
5
6
7
8
sky@LiJian:/mnt/c/Users/sky$ sudo passwd
New password:
Retype new password:
passwd: password updated successfully
sky@LiJian:/mnt/c/Users/sky$ su
Password:
root@LiJian:/mnt/c/Users/sky# su sky
sky@LiJian:/mnt/c/Users/sky$

切换源

默认源速度缓慢,切换到阿里源。

首先将原配置文件备份

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

使用vim打开,WSL竟然自带vim,有点意思。

1
sudo vim /etc/apt/sources.list

这里提供👉Ubuntu 的软件源,请自行更改。

在vim中输入如下的控制代码:

1
2
:%s/security.ubuntu/mirrors.aliyun/g
:%s/archive.ubuntu/mirrors.aliyun/g

保存并退出。执行以下代码更新软件包到最新状态。

1
sudo apt-get update&&sudo apt-get upgrade -y

解决中文乱码问题

安装中文语言包

1
sudo apt install language-pack-zh-hans language-pack-zh-hans-base

运行下述代码,现在可以正常显示中文了。

1
sudo apt install fonts-noto-cjk

然后,修改/etc/environment(在文件的末尾追加):

1
2
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

再修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加):

1
2
3
4
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN GB2312

对于中文乱码是空格的情况,安装中文字体解决。

1
sudo apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming

最后,执行命令:

1
sudo locale-gen

问题解决,中文显示正常。

修改默认语言环境为中文(可选)

设置本地化环境变量

1
echo "LANG=zh_CN.UTF-8" >> ~/.profile

安装man手册

Ubuntu默认是没有完全安装man手册

1
2
3
4
5
wget -c https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/man-pages-5.04.tar.gz
tar xvzf man-pages-5.04.tar.gz
cd man-pages-5.04
sudo make install
mandb #更新

为了显示中文手册,下载manpages-zh包。

可以直接运行如下命令安装

1
sudo apt-get install  manpages-zh

查看man安装路径

1
dpkg -L manpages-zh | less

~/.bashrc中添加

1
alias cman='man -M /usr/share/man/zh_CN'
1
source ~/.zshrc

查看是是否成功。

1
cman ls

Remote - WSL 插件

Remote - WSL

安装后可以:

  • 在WSL中转到任何文件夹并键入: code .启动VS Code。
  • F1,输入Remote-WSL:New Window,然后按Enter。使用文件菜单打开您的文件夹。

安装oh-my-zsh

安装

1
sudo apt-get install zsh
1
wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

安装Powerline字体

1
sudo apt-get install fonts-powerline

将默认的shell从bash改为zsh

1
chsh -s /bin/zsh

更改主题

官网主题

主题的路径在~/.oh-my-zsh/themes, 使某一主题生效的文件为~/.zshrc文件

1
vim ~/.zshrc

修改ZSH_THEME="ys"

插件

相关插件

Git

默认已开启

作用

可以使用各种 git 命令缩写。

Z

oh-my-zsh 内置组件 Z

作用 目录间快速跳转,不用再一直 cd

使用Z的缩写 z

cd 命令进入 /home/lijian/.oh-my-zsh/文件夹,下一次再想进入 .oh-my-zsh 文件夹的时候,直接 z .oh-my-zsh即可,或者只输入 .oh-my-zsh或一部分.oh 都行

删除无效路径

1
z -x 无效路径

zsh-autosuggestions

官网

作用 效率神器

输入命令时,会给出建议的命令(灰色部分)按键盘 → 补全

如果感觉 → 补全不方便,还可以自定义补全的快捷键,(输入会有问题,不推荐)

1
bindkey ',' autosuggest-accept

.zshrc 文件添加这句话即可。

📖参考1参考2参考3