WSL2设置Proxy的时候比较麻烦的一点是Host的IP会一直变。
但是没有代理的话很多事情都不方便,装软件包、下数据、捅VPS等等……
最后还是整了一个脚本。
#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
port=7890
set_proxy(){
export http_proxy="http://${hostip}:${port}"
export https_proxy="http://${hostip}:${port}"
export all_proxy="http://${hostip}:${port}"
}
unset_proxy(){
unset http_proxy
unset https_proxy
unset all_proxy
}
test_setting(){
echo "Host IP:" ${hostip}
echo "WSL IP:" ${wslip}
echo "Current Proxy:" ${all_proxy}
}
if [ "$1" = "set" ]
then
set_proxy
elif [ "$1" = "unset" ]
then
unset_proxy
elif [ "$1" = "test" ]
then
test_setting
else
echo "Usage: source proxy [set|unset|test]"
fi
丢进/usr/bin/proxy,chmod 755,再往.zshrc末尾加上source proxy set,收工。
- 为什么要用source? – 如果直接执行的话,是新起的shell,不会修改当前终端的环境变量。
- 为什么要set三个环境变量?- VSCode (Remote WSL)需要更新它的Extension,没有代理搞得它每次都自动把C++ Extension给删了(然后又timeout下不回来新的)。然后它的代理默认是继承http_proxy / https_proxy的,又不让我填别的东西,想了想干脆全set了吧……
虽然说感觉这个solution也挺ugly的,但是我一下子也想不到什么好的解法(躺
