环境变量应该大写还是小写?

我这两天使用 Trae 想写一个自动获取github上某个软件最新版本的下载链接的功能。但总是遇到连接不上 Github API 的问题,问来问去最终发现都是代理的设置问题。而我其实已经在系统环境变量里设置了环境变量了。但在看到 Trae 检查时设置代理时用的变量名是大写,而我自己在 Windows 系统设置里设置的小写。我就疑惑了,这个玩意到底是应该大写还是小写,难道这个问题就是因为大小写造成的?

答案

  1. 应该始终使用大写 (HTTPS_PROXY)。
  2. 同时设置 HTTP 和 HTTPS,即使你的代理 URL 本身是 http://

因为虽然 PowerShell 和 Windows 操作系统本身在技术上对环境变量名不区分大小写,但使用这些变量的应用程序(如 Git、Python、cURL、Node.js 等)几乎都是区分大小写的。

  1. Windows/PowerShell 的行为:不区分大小写
    • 在 PowerShell 中,如果你设置了 $env:httpss_proxy(小写),Windows 系统实际上会将其存储。
    • 如果你接着读取 $env:HTTPS_PROXY(大写),PowerShell 仍然能读到你用小写设置的值。这就是 Windows 不区分大小写的表现。
  2. 应用程序的行为:区分大小写(关键点)
    • HTTP_PROXYHTTPS_PROXY (大写) 是一个源自 Unix/Linux 世界的“事实标准”(de facto standard)。
    • 绝大多数跨平台工具(包括 Python 的 requests 库、Git、curl、wget、npm/yarn、Docker 等)被硬编码为只查找大写版本的环境变量。
    • 结论: 如果你设置了 $env:httpss_proxy(小写),PowerShell 会知道它,但 Git、Python 等工具会完全忽略它,导致代理设置无效。

💡如何永久设置?

但上述设置只是临时的,最终还是要去设置系统级或者用户级的环境变量。

1. 按 Win 键。

2. 搜索 “编辑环境变量” (Edit environment variables)。

3. 选择 “编辑您的帐户的环境变量” (Edit environment variables for your account) 或 “编辑系统环境变量” (Edit system environment variables)。

4. 在 “用户变量” (User variables) 或 “系统变量” (System variables) 部分,点击 “新建...” (New...):

变量名: HTTPS_PROXY
变量值: http://127.0.0.1:7890
变量名: HTTPS_PROXY
变量值: http://127.0.0.1:7890

5. 点击 “确定” 保存。你需要重启所有已打开的终端或应用程序(有时甚至需要注销或重启电脑)才能使新设置生效。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部