Antworten:
Es gibt keine zentrale Behörde, die Umgebungsvariablen eine offizielle Bedeutung zuweist, bevor Anwendungen sie verwenden können. POSIX definiert die Bedeutung einiger Variablen ( PATH
, TERM
, ...) und listet mehr mehr in einer nicht-normativen Art und Weise , wie im allgemeinen Gebrauch ist, alle von ihnen in Großbuchstaben geschrieben. http_proxy
und Freunde ist keiner von ihnen.
Im Gegensatz zu allen herkömmlichen Umgebungsvariablen, die von vielen Anwendungen verwendet http_proxy
werden https_proxy
, ftp_proxy
und no_proxy
werden normalerweise in Kleinbuchstaben angegeben. Ich kann mich an kein Programm erinnern, das sie nur in Großbuchstaben versteht. Ich kann nicht einmal ein Programm finden, das sie in Großbuchstaben ausprobiert. Viele Programme verwenden nur die Kleinbuchstabenvariante, einschließlich Luchs, Wget, Curl, Perl LWP, Perl WWW :: Search, Python urllib / urllib2 usw. Für diese Variablen ist die richtige Form die Kleinbuchstabenvariante.
Der Name in Kleinbuchstaben stammt mindestens von CERN libwww 2.15 im März 1994 (danke an Stéphane Chazelas für die Lokalisierung). Ich weiß nicht, was die Wahl von Kleinbuchstaben motiviert hat, was schon damals ungewöhnlich gewesen wäre.
HTTPS_PROXY
. Docker verwendet auch die Großbuchstabenvariante.
sudo -E apt-add-repository ppa:xxxxx/xxxx
. Ich musste unset https_proxy
undexport HTTPS_PROXY=http://a.b.c.d:xxxx
Es gibt keinen Standard und je nach Anwendung werden sowohl Groß- als auch Kleinbuchstaben verwendet (siehe auch HTTPS_PROXY, ALL_PROXY, NO_PROXY).
Beispielsweise:
locken
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()
unterstützt sowohl Klein- als auch Großbuchstaben.
Es wird auch ein Sicherheitsproblem erwähnt:
Wenn die Umgebungsvariable REQUEST_METHOD festgelegt ist, was normalerweise darauf hinweist, dass Ihr Skript in einer CGI-Umgebung ausgeführt wird, wird die Umgebungsvariable HTTP_PROXY (_PROXY in Großbuchstaben) ignoriert. Dies liegt daran, dass diese Variable von einem Client mithilfe des HTTP-Headers "Proxy:" eingefügt werden kann. Wenn Sie einen HTTP-Proxy in einer CGI-Umgebung verwenden müssen, verwenden Sie entweder ProxyHandler explizit oder stellen Sie sicher, dass der Variablenname in Kleinbuchstaben angegeben ist (oder zumindest das Suffix _proxy).
Einige Anwendungen können NO_PROXY
Sterne / IP-Bereiche enthalten, andere nicht.
So
export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy
sollten Sie abgedeckt haben.
Die Konvention besteht darin, beim Exportieren alle capps-Umgebungsvariablen zu verwenden, sodass Sie beim Schreiben von Shell-Skripten Namen in Kleinbuchstaben verwenden können, ohne sich Gedanken über Namenskollisionen mit anderen Programmen machen zu müssen. Dies ist natürlich nur eine Konvention. Es gibt keine technische Einschränkung für die Beschränkung der Namen von Umgebungsvariablen, sodass in einigen Fällen die Kleinbuchstabenversion verwendet werden kann. Es wird jedoch empfohlen, die Groß- und Kleinschreibung zu beachten, sodass sie möglicherweise unterschiedlich sein können Werte.
http_proxy
und ihren Geschwistern handelt es sich normalerweise um Kleinbuchstaben.
http_proxy
und Freunde ist entgegen einer Konvention in Kleinbuchstaben zu schreiben. Die Verwendung einer Anwendung HTTP_PROXY
wäre ein Fehler, da sie mit dem Rest der Welt nicht kompatibel wäre.
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
-> Ich habe gerade herausgefunden, dass Docker 17.04.0-ce nur NO_PROXY ehrt.