chh3213
文章18
标签13
分类7
终端按需代理配置指南:Windows、Mac、Linux 全平台

终端按需代理配置指南:Windows、Mac、Linux 全平台

约1.1k字 预计需要4分钟

在开发过程中,我们经常需要临时通过代理访问外网(如下载依赖、拉取 Git 仓库),但又不希望代理常驻后台影响正常上网。本文介绍一种随开随关、终端级、不污染系统环境变量的代理配置方案,覆盖 Windows (PowerShell / CMD)、Mac 和 Ubuntu。


核心思路

无论哪个平台,原理都一致:在当前 Shell 会话中注入环境变量,关闭终端后自动失效。

  • 开启代理:设置 HTTP_PROXYHTTPS_PROXYALL_PROXY
  • 关闭代理:清除上述变量
  • 作用范围:仅当前终端窗口,不影响浏览器和其他应用

一、Windows PowerShell(推荐)

PowerShell 支持通过 $PROFILE 配置文件持久化自定义函数,配置一次,永久使用。

1. 打开配置文件

1
if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -ItemType File -Force }; notepad $PROFILE

注意:如果你同时使用 Windows PowerShell 5.1 和 PowerShell 7,两者的 $PROFILE 路径不同,需分别在各自终端中配置。

2. 添加函数

1
2
3
4
5
6
7
8
9
10
11
12
13
function setproxy {
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:ALL_PROXY = "http://127.0.0.1:7890"
Write-Host "Proxy enabled: $($env:HTTP_PROXY)" -ForegroundColor Green
}

function unsetproxy {
Remove-Item Env:\HTTP_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:\HTTPS_PROXY -ErrorAction SilentlyContinue
Remove-Item Env:\ALL_PROXY -ErrorAction SilentlyContinue
Write-Host "Proxy disabled" -ForegroundColor Yellow
}

3. 加载配置

保存后,执行以下命令立即生效(或重启终端):

1
. $PROFILE

4. 用法

1
2
setproxy    # 开启代理
unsetproxy # 关闭代理

二、Windows CMD

CMD 没有 $PROFILE 机制,原生不支持持久化函数。推荐编写两个批处理文件,放到系统 PATH 中的某个目录(如 C:\Tools)。

1. 创建批处理文件

proxy.bat

1
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.bat

1
2
3
4
@echo off
set HTTP_PROXY=
set HTTPS_PROXY=
echo [OK] Proxy disabled

2. 用法

在 CMD 中直接输入:

1
2
proxy       # 开启代理
unproxy # 关闭代理

3. 临时设置(不改文件)

如果只想临时用一次:

1
2
set HTTP_PROXY=http://127.0.0.1:7890
set HTTPS_PROXY=http://127.0.0.1:7890

关闭 CMD 窗口后自动失效。


三、Mac / Ubuntu (zsh / bash)

Mac 默认使用 zsh,Ubuntu 默认使用 bash。如果你使用 zsh,编辑 ~/.zshrc;如果使用 bash,编辑 ~/.bashrc

1. 打开配置文件

1
2
3
4
5
# Mac / Ubuntu (zsh)
vim ~/.zshrc

# Ubuntu (bash)
vim ~/.bashrc

2. 添加函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
proxy() {
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export all_proxy="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"
echo "[OK] Proxy enabled: $http_proxy"
}

unproxy() {
unset http_proxy
unset https_proxy
unset all_proxy
unset HTTP_PROXY
unset HTTPS_PROXY
unset ALL_PROXY
echo "[OK] Proxy disabled"
}

为什么大小写都写? Linux/macOS 下很多工具(如 curlwgetaptgit)优先识别小写变量,同时设置大小写可确保最大兼容性。

3. 加载配置

1
source ~/.zshrc    # 或 source ~/.bashrc

4. 用法

1
2
proxy       # 开启代理
unproxy # 关闭代理

四、各平台命令速查

平台 开启代理 关闭代理 配置持久化方式
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
2
3
# PowerShell / CMD / Mac / Ubuntu
curl -I https://www.google.com

如果能返回 HTTP 200 头信息,说明代理正常工作。

3. 内网地址不走代理

如果公司内网或局域网访问变慢,可以设置排除列表,假设公司域名为 .company.com

PowerShell:

1
$env:NO_PROXY = "localhost,127.0.0.1,.local,.company.com"

Mac / Ubuntu:

1
2
export 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
2
3
4
5
6
7
# Git
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

# npm
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890

5. 关闭终端后代理还在吗?

不在。以上所有方案修改的都是当前 Shell 进程的环境变量,关闭终端窗口后立即失效,完全不会污染系统级配置。

6. PowerShell 执行策略报错

如果 . $PROFILE 提示无法加载脚本,先执行:

1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
本文作者:chh3213
本文链接:https://chh3213.github.io/2026/05/02/%E7%BB%88%E7%AB%AF%E6%8C%89%E9%9C%80%E4%BB%A3%E7%90%86%E9%85%8D%E7%BD%AE%E6%8C%87%E5%8D%97%EF%BC%9AWindows%E3%80%81Mac%E3%80%81Linux-%E5%85%A8%E5%B9%B3%E5%8F%B0/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×
> > > > > >