前言
为什么要单独配
使用PowerShell或CMD时,明明给电脑开了代理,浏览器都能访问的网站,用命令行却访问不了,为什么呢?
因为有的代理软件(如Clash)默认只接管应用层的流量,命令行工具默认不读取系统代理,需要通过环境变量显示指定。
所以在使用命令行下载一些软件时,基本Clash开了代理,依旧龟速,不得不配国内镜像源。
总之就是需要手动给命令行工具配一遍就对了。
要不要永久配置
临时配置是临时修改当前终端进程内存里的环境变量,即只在当前窗口中生效,关掉再打开就要重新配。
而永久配置则是直接修改注册表或全局环境变量,一劳永逸,即使关掉当前窗口再打开依旧生效。
但是,由于配置后就走的是代理的端口,如果把代理软件关掉就会导致原本能访问的国内网页,如百度,都访问不了了,必须一直开着才行。
所以我建议,如果是一直开着代理软件不关,且代理软件的连接很稳定,那可以永久配置。省得每次都手动设置一遍。
接下来演示如何在windows11中给PowerShell和CMD配置代理(win10应该也一样)
PowerShell
临时配置代理
1
2
3
|
$env:http_proxy="http://127.0.0.1:代理端口"
$env:https_proxy="http://127.0.0.1:代理端口"
|
分别在PowerShell中执行上面两行命令,其中的代理端口就填代理工具的端口号

如图,Clash默认代理端口号是7890,那上面的命令中就填7890,如下
1
|
$env:http_proxy="http://127.0.0.1:7890"
|
连接测试
使用下面命令进行测试配置是否成功
1
2
3
4
|
# 国内测试
curl.exe baidu.com
# 国外测试
curl.exe google.com
|

注意:
在PowerShell中curl是Invoke-WebRequest的别名,并不是curl.exe,所以需要输入完整的curl.exe才行
永久配置
仅当前用户
1
2
3
|
[Environment]::SetEnvironmentVariable("http_proxy", "http://127.0.0.1:7890", "User")
[Environment]::SetEnvironmentVariable("https_proxy", "http://127.0.0.1:7890", "User")
|
同样分别执行(若代理端口不是7890,请改成你自己的代理端口)
系统全局(需要管理员权限)
1
2
3
|
[Environment]::SetEnvironmentVariable("http_proxy", "http://127.0.0.1:7890", "Machine")
[Environment]::SetEnvironmentVariable("https_proxy", "http://127.0.0.1:7890", "Machine")
|
注意:上面命令中的User和Machine都是写死的,不用修改,别把User改成自己的用户名了
删除永久配置
删除当前用户代理
1
2
3
|
[Environment]::SetEnvironmentVariable("http_proxy", $null, "User")
[Environment]::SetEnvironmentVariable("https_proxy", $null, "User")
|
删除系统全局代理(需要管理员权限)
1
2
3
|
[Environment]::SetEnvironmentVariable("http_proxy", $null, "Machine")
[Environment]::SetEnvironmentVariable("https_proxy", $null, "Machine")
|
CMD
临时配置代理
1
2
3
|
set http_proxy=http://127.0.0.1:代理端口
set https_proxy=http://127.0.0.1:代理端口
|
分别在CMD中执行上面两行命令,其中的代理端口就填代理工具的端口号

如图,Clash默认代理端口号是7890,那上面的命令中就填7890,如下
1
|
set http_proxy=http://127.0.0.1:7890
|
连接测试
使用下面命令进行测试配置是否成功
1
2
3
4
|
# 国内测试
curl baidu.com
# 国外测试
curl google.com
|

永久配置
仅当前用户
1
2
3
|
setx http_proxy "http://127.0.0.1:7890"
setx https_proxy "http://127.0.0.1:7890"
|
同样分别执行(若代理端口不是7890,请改成你自己的代理端口)
系统全局(需要管理员权限)
1
2
3
|
setx http_proxy "http://127.0.0.1:7890" /M
setx https_proxy "http://127.0.0.1:7890" /M
|
删除永久配置
删除当前用户代理
1
2
3
|
REG DELETE "HKCU\Environment" /F /V "http_proxy"
REG DELETE "HKCU\Environment" /F /V "https_proxy"
|
删除系统全局代理(需要管理员权限)
1
2
3
|
REG DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V "http_proxy"
REG DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V "https_proxy"
|
补充
有些工具(如 curl、git、npm)同时识别大小写,所以配置http或HTTP都可以
但少数工具只遵循 Unix 标准,只认大写。如需更兼容,可一并配置,即把前面那些命令中的http_proxy和https_proxy换成HTTP_PROXY和HTTPS_PROXY再设置一遍,如:
1
|
set HTTP_PROXY=http://127.0.0.1:7890
|