Mac终端永久设置代理需匹配shell类型(zsh用~/.zshrc,bash用~/.bash_profile),添加http_proxy、https_proxy、all_proxy及no_proxy变量并source生效,确保curl、git等命令自动走本地代理。

Mac终端永久设置命令行代理环境变量,是为了让curl、git、brew、npm等所有终端命令自动走Clash/Surge等本地代理端口,避免每次新开终端都手动export;不配置会导致终端直连而图形应用走代理,出现“浏览器能上、命令行超时”的割裂现象。
确认当前Shell类型与代理端口
执行echo $SHELL,输出/bin/zsh(macOS Catalina及以后默认)则后续操作针对~/.zshrc;若为/bin/bash则改~/.bash_profile。【必须匹配,否则配置永不生效】
确认你的代理工具(如Clash)正在监听SOCKS5端口,默认是7890;若改过端口,请记下实际值(如7891)。用lsof -i :7890验证——无输出说明代理进程未运行或未开启「系统代理」功能。
永久写入环境变量(zsh用户)
第一步:用nano编辑配置文件:nano ~/.zshrc
第二步:在文件末尾新增三行(请将7890替换为你的真实端口):
export http_proxy=http://127.0.0.1:7890export https_proxy=http://127.0.0.1:7890export all_proxy=socks5://127.0.0.1:7890
第三步:保存退出(Ctrl+O → 回车 → Ctrl+X),立即生效:source ~/.zshrc
注意:NO_PROXY建议一并加上,防止内网请求被错误转发。例如公司内网域名corp.example.com,就追加export no_proxy="localhost,127.0.0.1,.corp.example.com"——漏掉它,git clone私有仓库可能认证失败。
快速开关代理的别名方案
方法一:在~/.zshrc中添加两行别名
alias proxy='export http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890'alias unproxy='unset http_proxy https_proxy all_proxy'
方法二:执行proxy启用,unproxy关闭,无需重启终端,适合临时切回直连调试。
这一步操作起来很简单,直接把上面两行粘贴进~/.zshrc末尾再source即可。
验证是否真正生效
运行curl -v https://httpbin.org/ip 2>&1 | grep "Connected to",若输出中包含Connected to 127.0.0.1,说明请求已进入本地代理端口;若显示真实公网IP或连接超时,则配置未生效或代理未运行。
再执行echo $all_proxy,应返回socks5://127.0.0.1:7890;若为空,检查是否漏写export关键字——只写all_proxy=...不会导出为环境变量。

















