WSL2的Proxy设置

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です