据我所知,Linux 区分大小写。我通常像下面这样导出 http 代理:
export http_proxy= proxy:port export https_proxy= proxy:port
所以我认为如果我像下面这样写,它就会起作用。
export HTTP_PROXY= proxy:port export HTTPS_PROXY= proxy:port
但是,它也有效,我想知道原因以及为什么它有效。
我在这里找到了描述:http://curl.haxx.se/docs/manpage.html
环境变量可以以小写或大写形式指定。小写版本优先。http_proxy 是一个例外,因为它仅以小写形式提供。
这个惯例可以在任何地方适用吗?
參考文獻:
答案1
实际上我无法得到确切的答案。
但经过我的调查,我认为唯一的原因是,
所有需要互联网连接的应用程序都会尝试找到两者
1。2 https_proxy
。 如果其中一个已设置,它将使用它来连接互联网HTTPS_PROXY
。
答案2
环境变量一般都是大写的,但http_proxy
有时也有例外。例如,在 CGI 环境中,变量HTTP_PROXY
可以被攻击者控制,如下所示golang/go#16405:
CGI 规范定义传入请求标头“Foo:Bar”映射到环境变量
HTTP_FOO == "Bar"
。(参见 RFC 3875 4.1.18)环境
HTTP_PROXY
变量通常用于配置 HTTP 客户端的 HTTP 代理(并且默认情况下适用于 Go 的 net/http.Client 和 Transport)
所以它实际上取决于一个程序(当然他们可能在 rc 或配置文件中使用代理设置):
您可以在两种情况下设置环境变量以确保无误,例如:
export http_proxy=http://proxy.my.com:8080
export https_proxy=http://proxy.my.com:8080
export no_proxy=.host1,.my.com,.local
# reuse values for another case
export HTTP_PROXY=${http_proxy}
export HTTPS_PROXY=${https_proxy}
export NO_PROXY=${no_proxy}