在 macOS Terminal 中配置代理服务器的完整指南
在 macOS 系统中配置网络代理有多种方式,其中在 Terminal(终端)中设置代理是开发者常用的方法。本文将详细介绍三种不同层级的代理配置方案,从全局系统设置到临时的 Terminal 会话,再到永久的环境变量配置,帮助您根据实际需求选择最合适的方法。
一、全局系统代理设置(最简单但限制多)
配置步骤
- 打开系统设置
- 进入网络 > Wi-Fi > 选择当前连接的 Wi-Fi(如“4DX”)
- 点击详细信息 > 代理
- 根据需要配置 SOCKS 代理 或 HTTP/HTTPS
代理
- 地址:
127.0.0.1 - 端口:
10808(V2Ray 默认)或7891(ClashX 默认)
- 地址:
注意事项
- ✅ 优点:配置一次,对所有应用程序(包括 Terminal)生效
- ⚠️ 限制:部分命令行工具可能不遵循系统代理设置
- 🔧 验证方法:在 Terminal 中执行
curl https://httpbin.org/ip,查看返回的 IP 是否为代理服务器 IP
如果全局设置对 Terminal 无效,请继续阅读下文的手动配置方法。
二、Terminal 会话级代理设置(临时有效)
当您只需要在当前 Terminal 会话中使用代理时,可以通过环境变量快速配置。这种方法在关闭 Terminal 窗口后自动失效。
1. 根据代理客户端设置对应变量
V2Ray 用户(默认 SOCKS5 端口 10808):
1
2# 设置 SOCKS5 代理
export ALL_PROXY=socks5://127.0.0.1:10808
ClashX 用户(默认 SOCKS5 端口 7891):
1
2# 设置 SOCKS5 代理
export ALL_PROXY=socks5://127.0.0.1:7891
HTTP 代理用户(如有需要): 1
2
3# 设置 HTTP/HTTPS 代理
export HTTP_PROXY=http://127.0.0.1:10809
export HTTPS_PROXY=http://127.0.0.1:10809
2. 关键细节说明
- 变量名大小写敏感:在 macOS 的 Terminal
中,
ALL_PROXY(大写)是标准的环境变量名 - 兼容性设置:为增加兼容性,可同时设置小写变量:
1
2export all_proxy=socks5://127.0.0.1:10808
export ALL_PROXY=socks5://127.0.0.1:10808
3. 验证与诊断
设置完成后,请立即验证配置是否生效:
1 | |
4. 管理临时代理设置
1 | |
三、永久代理配置(对所有新 Terminal 会话生效)
如果您希望每次打开 Terminal 都自动应用代理设置,需要将配置添加到 shell 的配置文件中。
1. 确定当前使用的 Shell
1 | |
- 输出
/bin/zsh:使用 Zsh(macOS Catalina 及之后版本的默认 shell) - 输出
/bin/bash:使用 Bash
2. 编辑配置文件
根据您的 Shell 类型编辑对应的配置文件:
Zsh 用户: 1
2
3
4
5
6# 编辑配置文件
nano ~/.zshrc
# 在文件末尾添加
export ALL_PROXY=socks5://127.0.0.1:10808
export all_proxy=socks5://127.0.0.1:10808
Bash 用户: 1
2
3
4
5
6# 编辑配置文件
nano ~/.bash_profile
# 在文件末尾添加相同内容
export ALL_PROXY=socks5://127.0.0.1:10808
export all_proxy=socks5://127.0.0.1:10808
3. 应用配置
保存文件后,执行以下命令使配置立即生效:
1 | |
四、高级技巧与故障排除
1. 灵活的代理开关函数
在配置文件中添加以下函数,可快速切换代理状态:
1 | |
使用方法: 1
2
3proxy_on # 启用代理
proxy_off # 禁用代理
proxy_status # 查看状态
2. 端口冲突排查
如果代理不生效,请检查端口是否正确:
1 | |
3. 工具特异性配置
某些工具有自己的代理配置,需要单独设置:
Git 代理: 1
2
3
4
5
6
7# 设置 Git 使用代理
git config --global http.proxy socks5://127.0.0.1:10808
git config --global https.proxy socks5://127.0.0.1:10808
# 取消 Git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy
npm 代理: 1
2
3# 设置 npm 代理
npm config set proxy http://127.0.0.1:10809
npm config set https-proxy http://127.0.0.1:10809
五、配置方案对比
| 配置方式 | 生效范围 | 持久性 | 适用场景 |
|---|---|---|---|
| 系统网络设置 | 全局所有应用 | 永久 | 希望所有网络流量都走代理 |
| Terminal 环境变量 | 当前 Terminal 会话 | 临时 | 临时需要代理的命令行操作 |
| Shell 配置文件 | 所有新 Terminal 会话 | 永久 | 经常需要在命令行中使用代理 |
六、常见问题解答
Q:为什么设置了代理,但 ping
命令仍然不走代理? A:ping 使用 ICMP 协议,而
SOCKS5/HTTP 代理通常只支持 TCP/UDP 协议。这是正常现象。
Q:如何为单个命令设置代理而不影响环境?
A:使用命令前缀: 1
ALL_PROXY=socks5://127.0.0.1:10808 curl https://httpbin.org/ip
或者使用 curl 的 -x 选项:
1 | |
Q:如何查看代理设置的端口已经开启? A:您可以使用
lsof 命令查看端口监听情况: 1
lsof -i :10808
或者使用 netstat 命令: 1
2netstat -an | grep 10808
netstat -antp | grep 10808
Q:使用curl查询当前IP地址的时候会返回什么?
A:返回当前IP地址。以 httpbin。org/ip 为例,返回结果类似:
1
2
3{
"origin": "192.168.1.1"
}
Q:代理设置冲突怎么办? A:遵循优先级:命令行参数
> 环境变量 > 系统设置。使用 unset
清除环境变量可避免冲突。
总结
在 macOS Terminal 中配置代理是一个灵活且强大的功能。通过本文介绍的三种方法,您可以根据需要选择: 1. 系统全局设置:适合希望一劳永逸的用户 2. Terminal 会话变量:适合临时、偶尔使用代理的场景 3. Shell 配置文件:适合经常在命令行中工作的开发者
建议从临时配置开始,确认代理工作正常后,再考虑将其添加到配置文件中。正确配置代理后,您可以在
Terminal 中更顺畅地使用
git、npm、brew
等需要访问境外资源的工具。