浏览器早就走代理了,终端里 git clone 还是龟速——因为绝大多数命令行工具不读系统代理设置,它们只认环境变量和自己的配置文件。这篇把常用工具一次配齐。默认 Clash Verge 混合端口 7897,改过端口的自行替换。
通用方案:环境变量
PowerShell(Windows)
$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
bash / zsh(macOS、Linux)
export http_proxy="http://127.0.0.1:7897"
export https_proxy="http://127.0.0.1:7897"
export all_proxy="socks5://127.0.0.1:7897"
只对当前终端会话生效,关窗即失效——这通常是优点:不影响其他程序。验证是否生效:
curl -I https://www.google.com # 返回 HTTP/2 200 即成功
做成一键开关
每次手敲太麻烦,写进 shell 配置做成别名。bash/zsh 在 ~/.bashrc 或 ~/.zshrc 里加:
alias pon='export http_proxy=http://127.0.0.1:7897 https_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897'
alias poff='unset http_proxy https_proxy all_proxy'
PowerShell 在 $PROFILE 里加对应 function。之后 pon 开、poff 关。
只认自家配置的工具
git
git config --global http.proxy http://127.0.0.1:7897
# 取消:
git config --global --unset http.proxy
注意这只管 HTTPS 协议的仓库;SSH 协议([email protected])要在 ~/.ssh/config 里配 ProxyCommand,或者干脆换 HTTPS 地址。
npm / pnpm
npm config set proxy http://127.0.0.1:7897
npm config set https-proxy http://127.0.0.1:7897
pip
pip install package --proxy http://127.0.0.1:7897
或者直接吃环境变量,无需单独配置。
docker
分两处:docker pull 走的是守护进程,要在 Docker Desktop 的 Settings → Resources → Proxies 里填;容器内构建时的代理则通过 --build-arg HTTP_PROXY=… 传入。两处别配混。
更省事的选择:TUN 模式
不想逐个工具伺候,开 TUN 模式后所有命令行流量自动进代理,上面的配置全部可以省掉。代价是全局生效——想精细控制哪个工具走不走,还是环境变量灵活。也可以反向操作:TUN 全局接管 + 进程直连规则排除个别工具。
常见坑:环境变量写了 localhost 而不是 127.0.0.1。部分工具会把 localhost 解析成 IPv6 的 ::1,而内核默认只监听 IPv4,表现为「配了代理反而全断」。统一写 127.0.0.1 最稳。