回答:
アプリケーションが環境変数を使用する前に、環境変数に公式な意味を割り当てる中央機関はありません。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
。dockerは大文字のバリアントも使用します。
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
git
http.proxy
Override the HTTP proxy, normally configured using the http_proxy, https_proxy,
and all_proxy environment variables (see curl(1)). [..]
Python
urllib.request.getproxies()
小文字と大文字の両方のバリアントをサポートします。
また、セキュリティの問題にも言及しています。
通常、スクリプトがCGI環境で実行されていることを示す環境変数REQUEST_METHODが設定されている場合、環境変数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環境変数をエクスポートするときに使用するため、シェルスクリプトを記述するときに、他のプログラムとの名前の衝突を心配することなく小文字の変数名を使用できます。もちろんこれは単なる慣習であり、環境変数の名前を制限するための技術的な制限はないため、場合によっては小文字のバージョンを使用できますが、ベストプラクティスは大文字で、大文字と小文字を区別することを忘れないでください。値。
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 のみを尊重することがわかりました。