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
を大文字で読み取らないのはなぜですか?
これは単なる推測ですが、プロジェクトのタイムラインは、カールより数年前の(小文字のプロキシ変数を使用する)Lynxとの下位互換性のためであることを示唆しています。
簡単な答え:残念ながら、プログラムが異なれば、使用するenv
変数も異なります。
長い答え、( https://wiki.archlinux.org/index.php/proxy_settings#Environment_variables )から:
一部のプログラム(wgetなど)は、「protocol_proxy」形式の環境変数を使用して、特定のプロトコルのプロキシを決定します。 (...)一部のプログラムは、環境変数のすべて大文字のバージョンを探します。
過去に、両方のバージョン(すべて大文字と「通常」バージョンで簡単にオンとオフを切り替える)を設定する簡単なスクリプトを作成しました。これは、env
を介して実行する必要がある場合、一般的な方法のようです。変数。
Unixでは大文字と小文字が区別されます。つまり、$ http_proxyと$ HTTP_PROXYは2つの異なる変数です。
これを見てください:
user @ foo [〜] + xx = 2 user @ foo [〜] + echo $ xx 2 user @ foo [〜] + echo $ XX user @ foo [〜] +