在日常开发过程中,终端下使用 git clone、brew install、curl、go install 或 npm install 等命令时,经常会遇到网络连接超时或下载速度缓慢的问题。虽然本地开启了代理软件,但 macOS 终端默认不会自动走代理,需要我们手动配置环境变量。

如果直接把代理变量写死在 ~/.zshrc 中,访问公司内网或国内镜像源时又可能会产生干扰。因此,在 ~/.zshrc 中通过 alias 配置一键开启与关闭代理是最高效且灵活的方式。

1. 配置脚本

打开终端,编辑当前用户的 zsh 配置文件 ~/.zshrc:

1
vim ~/.zshrc

在文件末尾添加以下内容:

1
2
3
# http proxy
alias setproxy="export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7890;echo \"Set proxy successfully\" "
alias unsetproxy="unset http_proxy;unset https_proxy;unset all_proxy;echo \"Unset proxy successfully\" "

注意:
上述配置中的端口 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
2
3
4
5
# 方式一:查看当前出口 IP 详情
curl cip.cc

# 方式二:或者使用 ipinfo
curl ipinfo.io

如果输出的 IP 已经变为代理节点的 IP,说明代理配置成功。

也可以检查环境变量是否设置成功:

1
2
3
echo $http_proxy
echo $https_proxy
echo $all_proxy

3.3 关闭代理

如果不需要代理,执行:

1
unsetproxy

输出:

1
Unset proxy successfully

再次执行 curl cip.cc 即可确认是否已切回本地网络。


4. 常见问题排查

  1. 为什么配置了代理后 ping google.com 依然超时?
    • ping 命令使用的是网络层的 ICMP 协议,而 http_proxy 与 socks5 是传输层/应用层代理,环境变量对 ping 无效。测试代理连通性请使用 curl。
  2. 只对当前终端窗口有效
    • 环境变量的作用域是当前 Shell 会话。新开一个终端窗口默认是不走代理的,需要使用时输入 setproxy 即可,互不干扰,非常干净。
  3. Git 是否能正常走该代理?
    • 终端设置了 http_proxy / https_proxy / all_proxy 后,通过 HTTP/HTTPS 协议拉取的 Git 仓库(https://github.com/...)会自动使用该代理。