这个 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 设置、浏览器偏好或显式的命令选项也可能在删除变量后仍然选用代理。如果流量还在走代理,请检查该客户端的配置。

相关文章