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_proxyi 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_proxyi no_proxysą 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_proxyiexport 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_PROXYzawierać 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_proxya jego rodzeństwo jest zwykle pisane małymi literami.
http_proxyi przyjaciół ma być pisany małymi literami, z naruszeniem konwencji. Zastosowanie aplikacji HTTP_PROXYbyłoby błędem, ponieważ byłoby niezgodne z resztą świata.
Zarówno http_proxyi HTTP_PROXYpowinien 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.