wsl全称是windows的linux子系统,可以理解为在你的windows电脑上提供一个linux的工作环境,举个简单的例子是:windows没有bash,执行不了shell脚本,但是有了wsl之后,就有了bash。注意,wsl不是虚拟机,wsl不是和windows隔离的,所以是能操作windows的文件的。从另一个角度看,windows就一个linux发行版。
安装
windows10 2004版本以后可以使用
wsl --install
详见https://docs.microsoft.com/zh-cn/windows/wsl/install
会增加一个ubuntu20.04版本
windows terminal使用
根据之前的windows terminal配置把ubuntu的配色方案改为Atom
。
apt设置代理
默认安装的ubuntu的默认源是官方源,国内比较慢,直接配置apt代理,支持我的ProxyOverTls哦。
vim /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "https://user:passwd@server:port/";
Acquire::https::Proxy "https://user:passwd@server:port/";
apt不更新某软件
apt-mark 可以对软件包进行设置(手动/自动)安装标记,也可以用来处理软件包的 dpkg(1) 选中状态,以及列出或过滤拥有某个标记的软件包。
apt-mark常用命令
apt-mark auto – 标记指定软件包为自动安装
apt-mark manual – 标记指定软件包为手动安装
apt-mark minimize-manual – Mark all dependencies of meta packages as automatically installed.
apt-mark hold – 标记指定软件包为保留(held back),阻止软件自动更新
apt-mark unhold – 取消指定软件包的保留(held back)标记,解除阻止自动更新
apt-mark showauto – 列出所有自动安装的软件包
apt-mark showmanual – 列出所有手动安装的软件包
apt-mark showhold – 列出设为保留的软件包
比如保留某个软件不更新可以使用hold标记,如docker
sudo apt-mark hold docker*
sudo apt-mark showhold
如果要解除保留可以使用unhold
sudo apt-mark unhold docker*
git设置
由于wsl支持windows和linux的命令互操作,你实际上会有两个git,一个wsl的git,一个windows的git.exe。下面说说wsl的git怎么使用
git config --global user.name "user"
git config --global user.email "xx@xx.com"
git config --global credential.helper store
# wsl的git忽略文件权限的变更
git config --global core.filemode false
# wsl的git 提交时自动将crlf转换为lf,checkout时不转成crlf
git config --global core.autocrlf input
windows的git.exe也执行下:
# wsl的git 提交时自动将crlf转换为lf,checkout时不转成crlf
git config --global core.autocrlf input
autocrlf的配置详见git文档
简单解释就是:
- windows使用crlf换行,linux和macos使用lf换行(早期macos使用cr换行)
- autocrlf=true,提交到index时自动将crlf换成lf,checkout时自动将lf换成crlf。适合windows使用,widnwos默认配置
- autocrlf=input,提交到index时自动将crlf换成lf,checkout时不自动转换。适合macos和linux用。
- autocrlf=false,不自动转换换行符。
git文档推荐,linux和macos使用input,windows使用true。这样保证index、linux、macos中永远是lf,windows中是crlf。
但是我的设置成了windows上也是input。
直接原因是我有很多shell脚本,原本git.exe的bash是可以执行crlf的shell文件的。安装wsl后,bash被替换为了Ubuntu的bash,不能处理crlf的shell文件。——我需要shell脚本是lf的。
根本原因,换行符的问题是一个历史遗留问题,是操作系统之间的壁垒。现代的ide或者文本编辑器都是跨平台使用的,他们能处理换行符的问题,那么用vscode,idea就行了,不要用windows的老版文本编辑器了。
我已经比较习惯在linux处理文本了,vim、grep、awk、sed等等很爽,wsl的最大好处就是在windows上能用上原生的bash,那就文本全部linux化好了。