macOS 终端使用 zsh 快速配置与切换代理(Proxy)
在日常开发过程中,终端下使用 git clone、brew install、curl、go install 或 npm install 等命令时,经常会遇到网络连接超时或下载速度缓慢的问题。虽然本地开启了代理软件,但 macOS 终端默认不会自动走代理,需要我们手动配置环境变量。
如果直接把代理变量写死在 ~/.zshrc 中,访问公司内网或国内镜像源时又可能会产生干扰。因此,在 ~/.zshrc 中通过 alias 配置一键开启与关闭代理是最高效且灵活的方式。
1. 配置脚本
打开终端,编辑当前用户的 zsh 配置文件 ~/.zshrc:
1 | vim ~/.zshrc |
在文件末尾添加以下内容:
1 | # http proxy |
注意:
上述配置中的端口7890为本地代理客户端的监听端口(例如 Clash 默认混合端口为 7890)。如果使用的是其它代理软件(如 v2rayU 常用 1087 / 1080),请根据实际情况修改端口号。
脚本说明
- **
setproxy**:http_proxy&https_proxy:设置 HTTP/HTTPS 请求的代理服务器地址。all_proxy:设置通用代理(此处配置为 SOCKS5 协议),很多命令行工具在没有专属变量时会优先使用该变量。- 配置完成后打印提示
Set proxy successfully。
- **
unsetproxy**:- 通过
unset命令删除对应的环境变量,让当前终端会话恢复直接连接。 - 完成后打印提示
Unset proxy successfully。
- 通过
2. 使配置生效
保存并退出编辑后,在终端执行以下命令加载最新配置:
1 | source ~/.zshrc |
3. 使用方法与测试
3.1 开启代理
在需要走代理的终端窗口中执行:
1 | setproxy |
输出:
1 | Set proxy successfully |
3.2 验证代理是否生效
可以通过 curl 查看当前的公网出口 IP 和地理位置:
1 | # 方式一:查看当前出口 IP 详情 |
如果输出的 IP 已经变为代理节点的 IP,说明代理配置成功。
也可以检查环境变量是否设置成功:
1 | echo $http_proxy |
3.3 关闭代理
如果不需要代理,执行:
1 | unsetproxy |
输出:
1 | Unset proxy successfully |
再次执行 curl cip.cc 即可确认是否已切回本地网络。
4. 常见问题排查
- 为什么配置了代理后
ping google.com依然超时?ping命令使用的是网络层的 ICMP 协议,而http_proxy与socks5是传输层/应用层代理,环境变量对ping无效。测试代理连通性请使用curl。
- 只对当前终端窗口有效
- 环境变量的作用域是当前 Shell 会话。新开一个终端窗口默认是不走代理的,需要使用时输入
setproxy即可,互不干扰,非常干净。
- 环境变量的作用域是当前 Shell 会话。新开一个终端窗口默认是不走代理的,需要使用时输入
- Git 是否能正常走该代理?
- 终端设置了
http_proxy/https_proxy/all_proxy后,通过 HTTP/HTTPS 协议拉取的 Git 仓库(https://github.com/...)会自动使用该代理。
- 终端设置了