Windows wsl2 开发环境搭建
发布于
开启 wsl 与安装 Ubuntu {#prepare}
标题部分 开启 wsl 与安装 Ubuntu {#prepare}详见官方文档,最好是 windows pro 专业版,linux 发行版直接从应用商店安装即可
shell 配置 {#shell-config}
标题部分 shell 配置 {#shell-config}-
在应用商店下载 Windows Terminal 界面现代化。顺便安利一波 PowerToys,微软开源的 windows 效率工具合集软件。
-
安装 zsh
# 安装 zsh sudo apt-get install zsh # 修改默认的 Shell 为 zsh chsh -s /bin/zsh
-
安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装历史记录建议插件
zsh-autosuggestions
# Clone this repository into $ZSH_CUSTOM/plugins (by default ~/.oh-my-zsh/custom/plugins) git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions # Add the plugin to the list of plugins for Oh My Zsh to load (inside ~/.zshrc): plugins=( git zsh-autosuggestions ) # 配置生效 source ~/.zshrc
安装语法高亮插件
zsh-syntax-highlighting
# Clone this repository in oh-my-zsh's plugins directory: git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # Activate the plugin in ~/.zshrc: plugins=( git zsh-syntax-highlighting zsh-autosuggestions ) # 配置生效 source ~/.zshrc
安装 spaceship 主题
git clone https://github.com/spaceship-prompt/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1 # Symlink spaceship.zsh-theme to your oh-my-zsh custom themes directory: ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"
然后再
.zshrc
中设置ZSH_THEME="spaceship"
命令行代理配置 {#proxy-config}
标题部分 命令行代理配置 {#proxy-config}在 Windows host 上开启了代理服务,如何在 wsl 上也能使用?在 ~/set_proxy
建一个 shell 脚本 ,内容如下:
#!/bin/zsh
# 获取 windows host 的ip
hostip=$(ipconfig.exe | grep 'vEthernet (WSL)' -A4 | cut -d":" -f 2 | tail -n1 | sed -e 's/\s*//g')
wslip=$(hostname -I | awk '{print $1}')
port=10080
socks5_port=10081
PROXY_HTTP="http://${hostip}:${port}"
PROXY_SOCKS5="socks5://${hostip}:${socks5_port}"
set_proxy(){
export http_proxy="${PROXY_HTTP}"
export HTTP_PROXY="${PROXY_HTTP}"
export https_proxy="${PROXY_HTTP}"
export HTTPS_proxy="${PROXY_HTTP}"
export all_proxy="${PROXY_SOCKS5}"
export ALL_PROXY="${PROXY_SOCKS5}"
}
unset_proxy(){
unset http_proxy
unset HTTP_PROXY
unset https_proxy
unset HTTPS_PROXY
unset all_proxy
unset ALL_PROXY
}
test_setting(){
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current proxy:" $https_proxy
}
if [ "$1" = "set" ]
then
set_proxy
elif [ "$1" = "unset" ]
then
unset_proxy
elif [ "$1" = "test" ]
then
test_setting
else
echo "Unsupported arguments."
fi
# 添加代理
# git config --global http.proxy "${PROXY_HTTP}"
# git config --global https.proxy "${PROXY_HTTP}"
# 移除代理
# git config --global --unset http.proxy
# git config --global --unset https.proxy
然后需要修改文件权限
# 更改为可执行脚本
chmod u+x ./set_proxy
# 然后在 ~/.zshrc 中添加
alias proxy="source ~/set_proxy"
. ~/set_proxy set
# 然后运行
source ~/.zshrc
# 即可在命令行中使用 proxy 来设置、取消、print 代理设置
使用 Clash for Windows 如何配置 wsl2 代理 {#cfw-wsl2-proxy}
标题部分 使用 Clash for Windows 如何配置 wsl2 代理 {#cfw-wsl2-proxy}首选不需要上面提到的 set_proxy 脚本。感谢这个帖子和回复
- 开启 mixin
- 开启 Tap Device
- 在 cfw 的设置里,编辑 profile mixin
mixin:
dns:
enable: true
enhanced-mode: redir-host
listen: 0.0.0.0:53
nameserver:
- 8.8.8.8
- 114.114.114.114
如果一切顺利,测试一下 ip 地址:
➜ curl myip.ipip.net
当前 IP:128.1.134.153 来自于:中国 香港 zenlayer.com
如果失败了,查看一下这个文件的内容,应该是这样的
➜ cat /etc/resolv.conf
nameserver 8.8.8.8
如果不是,那再看一下这个文件的 generateResolvConf
字段,设置为 false,重启一下 wsl2 试试
➜ cat /etc/wsl.conf
[network]
generateResolvConf = false
常见问题 {#faq}
标题部分 常见问题 {#faq}- proxy 设置不生效:可能是 windows 防火墙设置有问题
- 设置 Windows Terminal 中 wsl 默认启动路径为 home
"//wsl$/Ubuntu/home/<yourname>/"
- 无法 ping 通 windows host IP,可能原因 https://github.com/microsoft/WSL/issues/5437
- 关于获取 host ip 很多都是通过
/etc/resolv.conf
来获取的,但我这里这个文件内容是nameserve 8.8.8.8
,修改/etc/wsl.conf
中network.generateResolvConf
为false
,还是8.8.8.8
这个 google 的 DNS 解析服务器。 - windows 上的 docker 是可以在 wsl 里面运行的,需要将 docker desktop 中相关设置打开。
- windows 和 wsl 的 localhost 映射并不是 相互 的,详见issue
- 如何设置 wsl 静态 ip:https://github.com/microsoft/WSL/issues/4150#issuecomment-1018524753