终端按需代理配置指南:Windows、Mac、Linux 全平台
在开发过程中,我们经常需要临时通过代理访问外网(如下载依赖、拉取 Git 仓库),但又不希望代理常驻后台影响正常上网。本文介绍一种随开随关、终端级、不污染系统环境变量的代理配置方案,覆盖 Windows (PowerShell / CMD)、Mac 和 Ubuntu。
核心思路
无论哪个平台,原理都一致:在当前 Shell 会话中注入环境变量,关闭终端后自动失效。
- 开启代理:设置
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY - 关闭代理:清除上述变量
- 作用范围:仅当前终端窗口,不影响浏览器和其他应用
一、Windows PowerShell(推荐)
PowerShell 支持通过 $PROFILE 配置文件持久化自定义函数,配置一次,永久使用。
1. 打开配置文件
1 | |
注意:如果你同时使用 Windows PowerShell 5.1 和 PowerShell 7,两者的
$PROFILE路径不同,需分别在各自终端中配置。
2. 添加函数
1 | |
3. 加载配置
保存后,执行以下命令立即生效(或重启终端):
1 | |
4. 用法
1 | |
二、Windows CMD
CMD 没有 $PROFILE 机制,原生不支持持久化函数。推荐编写两个批处理文件,放到系统 PATH 中的某个目录(如 C:\Tools)。
1. 创建批处理文件
proxy.bat1
2
3
4@echo off
set HTTP_PROXY=http://127.0.0.1:7890
set HTTPS_PROXY=http://127.0.0.1:7890
echo [OK] Proxy enabled: %HTTP_PROXY%
unproxy.bat1
2
3
4@echo off
set HTTP_PROXY=
set HTTPS_PROXY=
echo [OK] Proxy disabled
2. 用法
在 CMD 中直接输入:
1 | |
3. 临时设置(不改文件)
如果只想临时用一次:
1 | |
关闭 CMD 窗口后自动失效。
三、Mac / Ubuntu (zsh / bash)
Mac 默认使用 zsh,Ubuntu 默认使用 bash。如果你使用 zsh,编辑 ~/.zshrc;如果使用 bash,编辑 ~/.bashrc。
1. 打开配置文件
1 | |
2. 添加函数
1 | |
为什么大小写都写? Linux/macOS 下很多工具(如
curl、wget、apt、git)优先识别小写变量,同时设置大小写可确保最大兼容性。
3. 加载配置
1 | |
4. 用法
1 | |
四、各平台命令速查
| 平台 | 开启代理 | 关闭代理 | 配置持久化方式 |
|---|---|---|---|
| PowerShell | setproxy |
unsetproxy |
$PROFILE |
| CMD | proxy |
unproxy |
.bat 文件 |
| Mac / Ubuntu | proxy |
unproxy |
~/.zshrc 或 ~/.bashrc |
五、常见问题与补充
1. 代理端口怎么填?
| 代理工具 | 默认 HTTP 端口 |
|---|---|
| Clash Verge / Clash for Windows | 7890 |
| v2rayN | 10809 |
| Shadowsocks (常规) | 1080 |
请根据实际使用的代理软件调整端口。
2. 如何验证代理已生效?
1 | |
如果能返回 HTTP 200 头信息,说明代理正常工作。
3. 内网地址不走代理
如果公司内网或局域网访问变慢,可以设置排除列表,假设公司域名为 .company.com:
PowerShell:1
$env:NO_PROXY = "localhost,127.0.0.1,.local,.company.com"
Mac / Ubuntu:1
2export no_proxy="localhost,127.0.0.1,.local,.company.com"
export NO_PROXY="localhost,127.0.0.1,.local,.company.com"
4. Git / npm 等工具仍需单独配置
环境变量只能影响支持它的程序。部分工具需要额外配置:
1 | |
5. 关闭终端后代理还在吗?
不在。以上所有方案修改的都是当前 Shell 进程的环境变量,关闭终端窗口后立即失效,完全不会污染系统级配置。
6. PowerShell 执行策略报错
如果 . $PROFILE 提示无法加载脚本,先执行:
1 | |