Fish Shell 函数实现一句命令配置 WSL2 使用 Windows 代理

WSL2 无法访问 Windows 端 localhost

在 WSL2(Windows Subsystem Linux)中,本机 Windows 可以访问 WSL2 中的 localhost127.0.0.1;但是 WSL2 中的 Linux 无法访问 Window 中的 localhost127.0.0.1。这给 WSL2 使用 Windows 这边的代理带来了大量困难。

而 Bash 中通过 export 定义环境变量(environment variables)的方法在 fish 中无效。不仅无效,调用时不会返回错误信息,这与“no news is good news”的 unix 哲学格格不入。

定义 Fish Shell 全局函数

FIsh shell 的配置信息一般存储在:~/.config/fish/config.fish 文件中。在其中加入如下内容:

# proxy [Address of proxy]
function proxy
    set -Ux all_proxy http://$argv[(count $argv)]:10811
    set -Ux http_proxy http://$argv[(count $argv)]:10811
    set -Ux https_proxy http://$argv[(count $argv)]:10811
    echo all_proxy=$all_proxy
    echo http_proxy=$http_proxy
    echo https_proxy=$https_proxy
end

function noproxy
    set -e all_proxy
    set -e http_proxy
    set -e https_proxy
end

即可定义两条命令:proxynoproxy

使用

开启代理

在 Fish 中输入如下命令:

proxy 192.168.1.6

其中,如 192.168.1.6 等 IP 地址是本机在局域网中的 IP 地址。只需要确保 Windows 上的代理工具许可局域网连接即可正常使用。开启后对于 bash 一样有效。

关闭代理

在 Fish 中输入如下命令:

noproxy

即可关闭代理。

发表评论