浏览器早就走代理了,终端里 git clone 还是龟速——因为绝大多数命令行工具不读系统代理设置,它们只认环境变量和自己的配置文件。这篇把常用工具一次配齐。默认 Clash Verge 混合端口 7897,改过端口的自行替换。

在 PowerShell 和 bash 中设置代理环境变量并验证生效
环境变量是通用方案,当前会话立即生效

通用方案:环境变量

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 最稳。