为什么 wget 不能读取大写格式的 HTTP_PROXY?

为什么 wget 不能读取大写格式的 HTTP_PROXY?

我知道在 unix/linux 中环境变量是大写的,例如LD_LIBRARY_PATH ; HOME ; $USER等等。今天使用 wget 时,我发现这个命令只使用小写环境变量:

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大写格式?

答案1

这只是一个猜测,但项目时间表表明它是为了向后兼容 Lynx,Lynx 比 curl 早几年(并且使用小写的代理变量)。

答案2

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

长答案,来自(https://wiki.archlinux.org/index.php/proxy_settings#Environment_variables):

一些程序(例如 wget)使用“protocol_proxy”形式的环境变量来确定给定协议的代理。(...)一些程序会查找环境变量的全大写版本。

过去,我编写了一个简单的脚本,设置了两个版本(全部大写和“常规”版本,以便轻松打开和关闭它们,并且如果必须通过env变量来完成,这似乎是一种常见的做事方式。

答案3

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

看这个:

用户@foo[~]+ xx=2
用户@foo[~]+ echo $xx
2
用户@foo[~]+ echo $XX

用户@foo[~]+

相关内容