用 unproxy 函数清理 Bash 和 Zsh 的代理变量
修好一个 shell 辅助脚本:它在启用按协议划分的变量和大写 ALL_PROXY 之后只删除了 all_proxy。
这个 shell 辅助脚本的关闭开关并不完整:
export http_proxy=http://127.0.0.1:1087
export https_proxy=http://127.0.0.1:1087
export ALL_PROXY=socks5://127.0.0.1:1080
alias unproxy='unset all_proxy'
在 Unix shell 中,all_proxy 和 ALL_PROXY 是两个不同的名字。这个 alias 没有删除上面三个变量中的任何一个。只删除大写的 ALL_PROXY,两个按协议划分的设置仍会保留。
要从当前 Bash 或 Zsh 会话中清除这些常见名字:
unproxy() {
unset http_proxy https_proxy all_proxy
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
}
在应当让后续命令继承干净环境的那个 shell 里调用该函数。子脚本无法清理其父终端的环境。
已经在运行的应用会保留自己的状态。curl 配置文件、Git 设置、浏览器偏好或显式的命令选项也可能在删除变量后仍然选用代理。如果流量还在走代理,请检查该客户端的配置。