export http_proxy不总是生效,因wget、git、Go等工具对代理变量大小写敏感或需单独配置,且ssh、docker、npm等完全忽略该变量,须按工具规则分别设置。
为什么 export http_proxy 不总是生效
终端里执行 export http_proxy="http://127.0.0.1:8080" 后,curl 可能走代理,但 wget、git 或某些 Go/Python 工具却直连——因为它们不读取 http_proxy 环境变量,或优先级被覆盖。
-
wget默认只认http_proxy,但若配置了~/.wgetrc里的http_proxy行,会以配置文件为准 -
git需显式设置:git config --global http.proxy "http://127.0.0.1:8080" - Go 程序(如
go get)读HTTP_PROXY(全大写),小写变量无效 - 部分 Rust/Cargo 工具依赖
https_proxy,漏设会导致 HTTPS 请求失败
如何让 proxy 环境变量真正“全局”生效
仅在当前 shell 执行 export 是临时的;要持久化,必须写入 shell 初始化文件,但要注意不同 shell 的加载路径差异。
- 对 Bash:追加到
~/.bashrc(交互式非登录 shell)或~/.bash_profile(登录 shell),推荐统一写~/.bashrc并确保~/.bash_profile有source ~/.bashrc - 对 Zsh:写入
~/.zshrc,Zsh 默认不读~/.bashrc - 务必同时设置大小写变体:
export HTTP_PROXY="http://127.0.0.1:8080"和export http_proxy="http://127.0.0.1:8080",避免工具因大小写敏感失效 - 记得设
NO_PROXY(或no_proxy)跳过内网和本地地址,例如:export NO_PROXY="localhost,127.0.0.1,.internal.example.com"
哪些命令会忽略 proxy 环境变量
不是所有命令都遵守 http_proxy。典型例外包括: