Answers:
在应用程序可以使用环境变量之前,没有中央机构为环境变量分配正式的含义。POSIX定义了一些变量(PATH
,,TERM
…)的含义,并以非规范的方式列出了其他一些常用的变量,所有变量均为大写。http_proxy
朋友不是其中之一。
不像许多应用程序使用的基本上都是传统的环境变量,http_proxy
,https_proxy
,ftp_proxy
和no_proxy
通常小写。我不记得有任何程序只了解大写字母,甚至找不到能大写的程序。许多程序仅使用小写变体,包括lynx,wget,curl,perl LWP,perl WWW :: Search,python urllib / urllib2等。因此,对于这些变量,正确的形式是小写形式。
小写字母的名称至少可以追溯到1994年3月的CERN libwww 2.15(这要归功于StéphaneChazelas)。我不知道是什么促使了小写字母的选择,即使在那时,这仍然是不寻常的。
HTTPS_PROXY
。码头工人也使用大写变体。
sudo -E apt-add-repository ppa:xxxxx/xxxx
。我必须unset https_proxy
和export HTTPS_PROXY=http://a.b.c.d:xxxx
没有标准,并且根据应用程序使用大写和小写版本(另请参见HTTPS_PROXY,ALL_PROXY,NO_PROXY)。
例如:
卷曲
ENVIRONMENT VARIABLES
Curl reads and understands the following environment variables:
http_proxy, HTTPS_PROXY, FTP_PROXY
They should be set for protocol-specific proxies. General proxy should be
set with
ALL_PROXY
A comma-separated list of host names that shouldn't go through any proxy is
set in (only an asterisk, '*' matches all hosts)
NO_PROXY
吉特
http.proxy
Override the HTTP proxy, normally configured using the http_proxy, https_proxy,
and all_proxy environment variables (see curl(1)). [..]
蟒蛇
urllib.request.getproxies()
支持小写和大写变体。
它还提到了一个安全问题:
如果设置了环境变量REQUEST_METHOD(通常指示您的脚本在CGI环境中运行),则环境变量HTTP_PROXY(大写_PROXY)将被忽略。这是因为客户端可以使用“ Proxy:” HTTP标头注入该变量。如果需要在CGI环境中使用HTTP代理,则可以显式使用ProxyHandler,或者确保变量名称为小写(或至少为_proxy后缀)。
有些应用程序允许NO_PROXY
包含星号/ ip范围,而另一些则不允许。
所以
export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy
应该覆盖你。
约定是在导出所有capps环境变量时使用它们,以便在编写Shell脚本时可以使用小写的变量名称,而不必担心与其他程序的名称冲突。当然,这只是一个约定,对环境变量名称的限制没有技术上的限制,因此在某些情况下可以使用小写形式,但是最佳实践是大写,并且请记住它们区分大小写,因此它们可以具有不同的含义价值观。
http_proxy
其同级通常是小写的。
http_proxy
和朋友的事实上的标准应该用小写字母拼写,这违反了约定。对于应用程序而言,HTTP_PROXY
将是一个错误,因为它与世界其他地方不兼容。
Unlike basically all conventional environment variables used by many applications, http_proxy, https_proxy, ftp_proxy and no_proxy are commonly lowercase. I don't recall any program that only understands them in uppercase
->出于记录,我刚刚发现docker 17.04.0-ce 仅尊重NO_PROXY。