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的,但是我一下子也想不到什么好的解法(躺