답변:
어플리케이션이 사용하기 전에 환경 변수에 공식적인 의미를 부여하는 중앙 권한은 없습니다. 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 로 거슬러 올라갑니다 . 나는 소문자 선택에 동기가 무엇인지 알지 못했습니다.
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
자식
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()
소문자와 대문자 변형을 모두 지원합니다.
또한 보안 문제에 대해서도 언급합니다.
스크립트가 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 만을 존중 한다는 것을 알았습니다 .