Terminal & oh-my-posh3 & WSL2

Windows Terminal

从microStore上安装,或者winget安装winget install --id=Microsoft.WindowsTerminal -e。安装完毕重启后,即添加到右键。

常用命令
1
2
3
4
5
6
7
8
9
10
11
# 设置代理
netsh winhttp set proxy proxy-server="http=127.0.0.1:7891;https=127.0.0.1:7891"
# 清除代理
netsh winhttp reset proxy
# 查看代理
netsh winhttp show proxy

# 显示目录树
tree
# 显示目录树(包含文件)
tree /f

oh-myposh3

微软商店搜索下载(如果下载错误,打开用户账户控制设置,将“始终通知”栏拉到最高。这是微软的一个bug)。然后还必须下载相应的字体,字体官网;可以下载作者推荐的MesloLGM NF字体。下载完成后,解压,全选、点击安装。

1. 配置字体

打开Windows Termina,打开设置json文件,在profiles项下配置字体:

1
2
3
4
5
6
"defaults": {
"font": {
"face": "MesloLGM NF"
}
},
"list": [...]

命令行输入oh-my-posh init pwsh | Invoke-Expression即可进行使用。

2. 配置自动执行脚本

每次打开都需要输入以上命令行显然是很麻烦的,这时候需要配置poweshell执行脚本来使得每次打开powershell、程序会自动进入on-my-posh3。

1
2
3
4
5
6
7
8
# 1. 启动编辑power shell配置文件的引擎
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }

# 2. 打开配置文件
notepad $profile

# 2. 写入配置脚本、保存。以后输入 notepad $profile 便可打开此文件进行脚本配置
oh-my-posh init pwsh | Invoke-Expression

如果新打开powershell窗口提示系统禁止运行脚本的话(计算机上启动 Windows PowerShell 时,执行策略很可能是 Restricted(默认设置)Restricted 执行策略不允许任何脚本运行),以管理员身份打开,命令行输入set-executionpolicy remotesigned即可。

3. 主题

命令Get-PoshThemes可以安装主题,主题所在目录为C:\Users[user name]\AppData\Local\Programs\oh-my-posh\themes。配置主题的话,找到相应的主题名称,在配置脚本中这样写:

1
oh-my-posh init pwsh --config C:\Users\[user name]\AppData\Local\Programs\oh-my-posh\themes\bubbles.omp.json | Invoke-Expression

WSL2

WSL是windows推出的可让开发人员不需要安装虚拟机或者设置双系统启动就可以原生支持运行GNU/Linux的系统环境,简称WSL子系统。WSL2使用全新体系架构使其能真正的运行一个Linux内核。

wsl2必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。可以通过winver命令查看版本。

1. 启用虚拟机平台和Linux子系统功能

控制面板>程序>程序和功能>启用或关闭Windows功能>适用于Linux的Windows子系统、虚拟机平台。打上勾、重启后生效。

2. 在MicroStore安装一Linux发行版(或者Ubantu)

下载完成后便可启动。命令行输入wsl -l --all -v查看已安装的Linux发行版。其形式如下:
wsl2-info
可以看到还是VERSION1,即wsl版本,接下来将其升级到wsl2版本(如果version=2则不用升级)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 1. 确保已在 BIOS 中启用 CPU 虚拟化。在Bios的CPU设置中启用,AMD是SVM,Intel是VT-x。

# 2. 升级,并且之后关闭wsl以重启
wsl --update
wsl --shutdown

# 3. 开启hyper-v,也可以在在windows功能中开启。(家庭版没有hyper-v选项,先用命令行添加hyper-v功能)
bcdedit /set hypervisorlaunchtype auto

# 4. 将wsl设为默认。以后下载安装的Linux默认就是wsl2
wsl --set-default-version 2

# 5. 查看已安装的Linux
wsl -l -v

# 6. 将目标Linux转为wsl2
wsl --set-version <name> 2

# 附:添加hyper-v。新建新建hyperv.cmd文件,写入以下内容,运行
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
3. 启用systemd

以下在linux系统内操作

1
2
3
4
5
6
7
8
9
# 1. etc目录下新建wsl.conf文件
sudo vim /etc/wsl.conf

# 2. 写上以下
[boot]
systemd=true

# 3. 重启wsl2
wsl --shutdown
4. 网络&代理相关

wsl2的IP地址和主机IP一致,即127.0.0.1可以访问。
若出现以下报错:

1
2
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。
NAT 模式下的 WSL 不支持 localhost 代理。

解决:
在Windows中的C:\Users<your_username>目录下创建一个.wslconfig文件,然后在文件中写入如下内容:

1
2
3
4
5
6
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

重启。

  1. 设置代理方法一:安装代理软件
  2. 设置代理方法二:使用windows的代理
    1. windows下的代理软件打开允许局域网连接
    2. Linux下新建代理设置脚本并且应用
      1
      vim ~/.proxyrc
      写入(7890是windows下代理软件设置的端口)
      1
      2
      3
      4
      #!/bin/bash
      host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
      export http_proxy="http://$host_ip:7890"
      export https_proxy="https://$host_ip:7890"
      应用
      1
      source ~/.proxyrc
5. 常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 # 查看已安装的Linux发行版
wsl -l —all -v

# 导出Linuxtar文件到D盘
wsl —export Ubuntu-20.04 d:/wsl-ubuntu-20.04.tar

# 注销当前linux发行版
wsl —unregister Ubuntu-20.04

# 重新导入并安装wsl到D盘
wsl —import Ubuntu-20.04 d:/wsl-ubuntu-20.04 d:/wsl-ubuntu-20.04.tar —version 2

# 设置默认登陆用户名为安装时的用户名
ubuntu2004 cofig —default-user USERNAME