Ответы:
Нет централизованного органа, который бы придавал официальное значение переменным среды, прежде чем приложения смогут их использовать. POSIX определяет значение некоторых переменных ( PATH
, TERM
, ...) и списки несколько больше в ненормативном, как быть в общем пользовании, все они в верхнем регистре. http_proxy
и друзья не один из них.
В отличие от обычных в основном всех переменных окружений , используемых многими приложениями, http_proxy
, https_proxy
, ftp_proxy
и , no_proxy
как правило , в нижнем регистре. Я не помню ни одной программы, которая понимает их только в верхнем регистре, я даже не могу найти ту, которая пробует их в верхнем регистре. Многие программы используют только строчный вариант, в том числе lynx, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2 и т. Д. Поэтому для этих переменных правильная форма - строчная.
Название в нижнем регистре восходит по крайней мере к CERN libwww 2.15 в марте 1994 года (спасибо Стефану Шазеласу за то, что нашли это). Я не знаю, что послужило причиной выбора строчных букв, что было бы необычно даже тогда.
HTTPS_PROXY
. Докер также использует прописные буквы.
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
мерзавец
http.proxy
Override the HTTP proxy, normally configured using the http_proxy, https_proxy,
and all_proxy environment variables (see curl(1)). [..]
питон
urllib.request.getproxies()
поддерживает как строчные, так и прописные варианты.
Также упоминается проблема безопасности:
Если установлена переменная среды REQUEST_METHOD, которая обычно указывает, что ваш скрипт выполняется в среде CGI, переменная среды HTTP_PROXY (верхний регистр _PROXY) будет игнорироваться. Это связано с тем, что эта переменная может быть введена клиентом с помощью HTTP-заголовка «Proxy:». Если вам нужно использовать HTTP-прокси в среде CGI, либо используйте 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
-> Для справки, я только что узнал, что докер 17.04.0-ce только чтит NO_PROXY.