本帖记录了一些我常用的 WSL 设置。
安装常用包
Ubuntu:
sudo apt install build-essential
Debian:
sudo apt install gcc g++
Debian Common:
sudo apt install gdb valgrind git gpg curl wget zip unzip zsh
设置 Zsh
将 /bin/zsh
设置成默认 shell
chsh -s /bin/zsh
安装 oh-my-zsh
和常用插件
wget https://gist.githubusercontent.com/dingwen07/1261eac531f7f080d72b78f931a8ca01/raw/omz-setup.sh
chmod +x ./omz-setup.sh
./omz-setup.sh
编辑 ~/.zshrc
启用插件
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)
Java 环境
一般使用 Home | SDKMAN! the Software Development Kit Manager 管理 Java 环境。需要安装 unzip
包。
curl -s "https://get.sdkman.io" | bash
为 WSL 配置 Windows Terminal
为 CLI 程序开启鼠标滚动功能
默认情况下 WSL 中的 CLI 程序比如 less
,nano
不支持鼠标滚动,需要手动设置。设置完成之后,鼠标操作将默认由应用程序接收,如需选中对应程序中的内容,需要按住 Shift 键然后再进行选择。
less
(包括 man
)
将下面的内容保存为文本文件:
#env
LESS = --mouse
然后运行 lesskey <filename>
(较新的发行版可以忽略这一步,将文本保存到 ~/.lesskey
即可)。
nano
在 ~/.nanorc
中添加:
set mouse
vi[m]
在 ~/.vi[m]rc
中添加:
set mouse=a
SSH Agent
使用 npiperelay.exe
将 Windows 套接字 //./pipe/openssh-ssh-agent
转发到 WSL 12。
首先需要确保 Windows 的 PATH
里有 npiperelay.exe
,这样 WSL 内部就可以直接访问。可以通过 WinGet 安装。之后在 WSL 的系统里安装 socat
:
sudo apt install socat
然后将这一段脚本写入 ~/.win-ssh-agent/agent-bridge.sh
# Code extracted from https://stuartleeks.com/posts/wsl-ssh-key-forward-to-windows/ with minor modifications
# Configure ssh forwarding
export SSH_AUTH_SOCK=$HOME/.win-ssh-agent/agent.sock
# need `ps -ww` to get non-truncated command for matching
# use square brackets to generate a regex match for the process we want but that doesn't match the grep command running it!
ALREADY_RUNNING=$(ps -auxww | grep -q "[n]piperelay.exe -ei -s //./pipe/openssh-ssh-agent"; echo $?)
if [[ $ALREADY_RUNNING != "0" ]]; then
if [[ -S $SSH_AUTH_SOCK ]]; then
# not expecting the socket to exist as the forwarding command isn't running (http://www.tldp.org/LDP/abs/html/fto.html)
echo "removing previous socket..."
rm $SSH_AUTH_SOCK
fi
echo "Starting SSH-Agent relay..."
# setsid to force new session to keep running
# set socat to listen on $SSH_AUTH_SOCK and forward to npiperelay which then forwards to openssh-ssh-agent on windows
(setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork &) >/dev/null 2>&1
fi
之后在 .bashrc
或者 .zshrc
中添加
source $HOME/.win-ssh-agent/agent-bridge.sh
就可以了。
GnuPG
参照 在 WSL2 中使用 GPG 命令行工具以及对 Git commit 进行签名3
1Password CLI
使用 op
命令行进行方便且安全的凭据存取,首先在 Windows 中安装:
winget install AgileBits.1Password.CLI
之后在 .bashrc
或者 .zshrc
中添加如下内容:
# Aliases
alias op="op.exe"
# alias sudo="sudo -S <<< $(op read "op://Personal/Account Password/password")"
# Completions
eval "$(op completion zsh)"; compdef _op op.exe