为什么wget不会以大写格式读取HTTP_PROXY?

我知道在Unix / Linux的环境variables是大写,如LD_LIBRARY_PATH ; HOME ; $USER LD_LIBRARY_PATH ; HOME ; $USER LD_LIBRARY_PATH ; HOME ; $USER等等。 今天玩wget我看到这个命令只是使用小写的环境variables:

 env | grep -i proxy http_proxy=http://10.0.0.120:8080 wget -q http://google.it echo $? 0 unset http_proxy export HTTP_PROXY=http://10.0.0.120:8080 wget -q http://google.it echo $? 1 

为什么wget不会以大写格式读取HTTP_PROXY

这只是一个猜测,但项目时间表表明,这是为了与Lynx向后兼容,Lynx早于几年(并使用小写代理variables)。

简短的回答:不幸的是,不同的程序使用不同的envvariables。

很长的答案,从( https://wiki.archlinux.org/index.php/proxy_settings#Environment_variables ):

某些程序(如wget)使用“protocol_proxy”forms的环境variables来确定给定协议的代理。 (…)一些程序寻找环境variables的全部大写版本。

在过去,我已经做了一个简单的脚本来设置两个版本(所有上限和“常规”版本可以方便地打开和closures它们,而且如果必须通过envvariables。

Unix区分大小写。 这意味着$ http_proxy和$ HTTP_PROXY是两个不同的variables。

看这个:

 user @ foo [〜] + xx = 2
 user @ foo [〜] + echo $ xx
 2
 user @ foo [〜] + echo $ XX

用户@ FOO [〜] +