Odpowiedzi:
Nie ma organu centralnego, który przypisywałby oficjalne znaczenie zmiennym środowiskowym, zanim aplikacje będą mogły ich użyć. POSIX definiuje znaczenie niektórych zmiennych ( PATH
, TERM
, ...) i kilka innych list w nienormatywnej sposób jako w powszechnym użyciu, wszystkie z nich wielkimi literami. http_proxy
i przyjaciele nie są jednym z nich.
W przeciwieństwie do praktycznie wszystkich typowych zmiennych środowiskowych używanych przez wielu zastosowaniach http_proxy
, https_proxy
, ftp_proxy
i no_proxy
są zwykle małe. Nie przypominam sobie żadnego programu, który rozumie je tylko dużymi literami, nie mogę nawet znaleźć takiego, który wypróbuje je dużymi literami. Wiele programów używa tylko małych liter, w tym rysi, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2 itd. Tak więc w przypadku tych zmiennych odpowiednia forma to mała litera.
Nazwa pisana małymi literami pochodzi przynajmniej od CERN libwww 2.15 w marcu 1994 r. (Podziękowania dla Stéphane'a Chazelasa za odnalezienie tego). Nie wiem, co uzasadniało wybór małych liter, co nawet wtedy byłoby niezwykłe.
HTTPS_PROXY
. doker używa również wariantu wielkich liter.
sudo -E apt-add-repository ppa:xxxxx/xxxx
. musiałem unset https_proxy
iexport HTTPS_PROXY=http://a.b.c.d:xxxx
Nie ma standardu, w zależności od aplikacji używane są zarówno wielkie, jak i małe wersje (patrz także HTTPS_PROXY, ALL_PROXY, NO_PROXY).
Na przykład:
kędzior
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)). [..]
Pyton
urllib.request.getproxies()
obsługuje zarówno małe, jak i wielkie litery.
Wspomina także o problemie bezpieczeństwa:
Jeśli ustawiona jest zmienna środowiskowa REQUEST_METHOD, co zwykle wskazuje, że skrypt działa w środowisku CGI, zmienna środowiskowa HTTP_PROXY (wielkie litery _PROXY) zostanie zignorowana. Jest tak, ponieważ klient może wprowadzić tę zmienną za pomocą nagłówka HTTP „Proxy:”. Jeśli potrzebujesz używać proxy HTTP w środowisku CGI, użyj jawnie ProxyHandler lub upewnij się, że nazwa zmiennej jest pisana małymi literami (lub przynajmniej sufiksem _proxy).
Niektóre aplikacje pozwalają NO_PROXY
zawierać gwiazdki / zakresy ip, podczas gdy inne nie.
Więc
export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy
powinien cię objąć.
Konwencja polega na użyciu wszystkich zmiennych środowiskowych capps podczas ich eksportowania, dzięki czemu podczas pisania skryptów powłoki można używać nazw zmiennych pisanych małymi literami, nie martwiąc się o kolizje nazw z innymi programami. Oczywiście jest to tylko konwencja, nie ma technicznych ograniczeń w ograniczaniu nazw zmiennych środowiskowych, więc w niektórych przypadkach można używać wersji z małymi literami, ale najlepszą praktyką jest stosowanie wielkich liter i pamiętaj, że rozróżniają małe i duże litery, aby mogły mieć różne wartości.
http_proxy
a jego rodzeństwo jest zwykle pisane małymi literami.
http_proxy
i przyjaciół ma być pisany małymi literami, z naruszeniem konwencji. Zastosowanie aplikacji HTTP_PROXY
byłoby błędem, ponieważ byłoby niezgodne z resztą świata.
Zarówno http_proxy
i HTTP_PROXY
powinien działać na systemach RHEL i ubuntu oparty.
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
-> Dla przypomnienia, właśnie dowiedziałem się, że doker 17.04.0-ce honoruje tylko NO_PROXY.