web-dev-qa-db-ja.com

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を大文字で読み取らないのはなぜですか?

2
c4f4t0r

これは単なる推測ですが、プロジェクトのタイムラインは、カールより数年前の(小文字のプロキシ変数を使用する)Lynxとの下位互換性のためであることを示唆しています。

3
Gerald Combs

簡単な答え:残念ながら、プログラムが異なれば、使用するenv変数も異なります。

長い答え、( https://wiki.archlinux.org/index.php/proxy_settings#Environment_variables )から:

一部のプログラム(wgetなど)は、「protocol_proxy」形式の環境変数を使用して、特定のプロトコルのプロキシを決定します。 (...)一部のプログラムは、環境変数のすべて大文字のバージョンを探します。

過去に、両方のバージョン(すべて大文字と「通常」バージョンで簡単にオンとオフを切り替える)を設定する簡単なスクリプトを作成しました。これは、envを介して実行する必要がある場合、一般的な方法のようです。変数。

4
c4urself

Unixでは大文字と小文字が区別されます。つまり、$ http_proxyと$ HTTP_PROXYは2つの異なる変数です。

これを見てください:

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