为 macOS 终端工具精准配置代理需区分系统与命令行代理,优先设 ALL_PROXY/HTTP_PROXY/HTTPS_PROXY 环境变量,并排除 *.apple.com 等关键域名;SOCKS5 适用于 Homebrew、curl、git,HTTP 代理适配私有仓库,PAC 需临时禁用以防干扰苹果服务。
为 macos 开发环境配置代理,核心目标不是“加一层转发”,而是让终端工具(如 homebrew、curl、git、npm)精准走可信代理通道,避开 dns 解析失配与直连限速。关键在于区分系统代理和命令行代理——系统偏好设置里的代理对图形界面应用生效,但终端工具默认忽略它;必须显式声明环境变量或配置工具专属代理。
明确代理类型与适用场景
开发中常用三类代理,用途不同,不可混用:
-
SOCKS5 代理:适合通用流量转发,Homebrew、git、curl 等多数 CLI 工具原生支持,推荐用于日常开发依赖下载(如
brew install node) - HTTP/HTTPS 代理:部分私有仓库、Maven、Gradle 或企业 Nexus 源要求显式 HTTP 代理,需在对应工具配置文件中单独指定
-
PAC 文件代理:多见于公司内网,自动分流国内外域名,但会干扰苹果服务(如
swscan.apple.com),开发 macOS 更新或 Xcode 下载时建议临时禁用
为终端命令配置代理(推荐方式)
不修改系统全局设置,避免影响 App Store、Safari 等 GUI 应用,只对 shell 生效:
- 打开
~/.zshrc(或~/.bash_profile),添加以下内容(以本地 ClashX 默认端口为例):
export ALL_PROXY=socks5://127.0.0.1:7892<br> export HTTP_PROXY=http://127.0.0.1:7892<br> export HTTPS_PROXY=http://127.0.0.1:7892
- 保存后运行
source ~/.zshrc生效 - 验证是否生效:
echo $ALL_PROXY应输出地址;curl -v https://github.com 2>&1 | grep "Connected to"可确认是否经由代理连接
按工具单独配置(更稳定)
某些工具不读取 ALL_PROXY,需单独设置:
-
Homebrew:无需额外操作,它自动识别
ALL_PROXY;若失效,可临时加前缀运行:ALL_PROXY=socks5://127.0.0.1:7892 brew install wget -
Git:执行
git config --global http.proxy http://127.0.0.1:7892和git config --global https.proxy http://127.0.0.1:7892 -
NPM:运行
npm config set proxy http://127.0.0.1:7892和npm config set https-proxy http://127.0.0.1:7892 -
Python pip:使用
pip install --proxy http://127.0.0.1:7892 requests,或写入~/.pip/pip.conf
绕过代理的关键域名(必做)
即使启用代理,也应排除苹果官方域名,防止系统更新、Xcode 下载、iCloud 同步失败:
- 在终端中添加忽略规则(适用于 curl/wget 等):
export NO_PROXY="localhost,127.0.0.1,*.apple.com,*.icloud.com,*.cdn-apple.com,osxapps.apple.com,swdist.apple.com,swscan.apple.com" - 将该行也加入
~/.zshrc,与代理变量一同加载 - 若使用 PAC 脚本,务必在“网络→代理→忽略这些主机与域”中填入相同域名列表(英文逗号分隔)


















