Câu trả lời:
Không có cơ quan trung ương nào gán ý nghĩa chính thức cho các biến môi trường trước khi các ứng dụng có thể sử dụng chúng. POSIX định nghĩa ý nghĩa của một số biến số ( PATH
,, TERM
) và liệt kê một số biến khác theo cách không quy tắc như đang được sử dụng phổ biến, tất cả chúng đều được viết hoa. http_proxy
và bạn bè không phải là một trong số họ.
Không giống như về cơ bản tất cả các biến môi trường truyền thống được sử dụng bởi nhiều ứng dụng, http_proxy
, https_proxy
, ftp_proxy
và no_proxy
được thành chữ thường thường. Tôi không nhớ bất kỳ chương trình nào chỉ hiểu chúng bằng chữ hoa, tôi thậm chí không thể tìm thấy chương trình nào thử chúng bằng chữ hoa. Nhiều chương trình chỉ sử dụng biến thể chữ thường, bao gồm lynx, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2, v.v. Vì vậy, đối với các biến này, dạng bên phải là dạng chữ thường.
Tên chữ thường bắt nguồn từ ít nhất là Cern libwww 2.15 vào tháng 3 năm 1994 (cảm ơn Stéphane Chazelas vì đã xác định vị trí này). Tôi không biết điều gì thúc đẩy sự lựa chọn chữ thường, điều mà sẽ không bình thường ngay cả khi đó.
HTTPS_PROXY
. docker cũng sử dụng biến thể chữ hoa.
sudo -E apt-add-repository ppa:xxxxx/xxxx
. tôi đã phải unset https_proxy
vàexport HTTPS_PROXY=http://a.b.c.d:xxxx
Không có tiêu chuẩn và cả phiên bản chữ hoa và chữ thường được sử dụng tùy thuộc vào ứng dụng (cũng xem HTTPS_PROXY, ALL_PROXY, NO_PROXY).
Ví dụ:
cuộn tròn
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)). [..]
Con trăn
urllib.request.getproxies()
hỗ trợ cả biến thể chữ thường và chữ hoa
Nó cũng đề cập đến một vấn đề bảo mật:
Nếu biến môi trường REQUEST_METHOD được đặt, thường cho biết tập lệnh của bạn đang chạy trong môi trường CGI, biến môi trường HTTP_PROXY (chữ hoa _PROXY) sẽ bị bỏ qua. Điều này là do biến đó có thể được chèn bởi một khách hàng bằng cách sử dụng tiêu đề HTTP Proxy:. Nếu bạn cần sử dụng proxy HTTP trong môi trường CGI, hãy sử dụng ProxyHandler một cách rõ ràng hoặc đảm bảo tên biến được viết thường (hoặc ít nhất là hậu tố _proxy).
Một số ứng dụng cho phép NO_PROXY
chứa các ngôi sao / phạm vi ip trong khi những ứng dụng khác thì không.
Vì thế
export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy
nên có bạn bảo hiểm
Quy ước là sử dụng tất cả các biến môi trường capps khi xuất chúng, để khi bạn viết script shell, bạn có thể sử dụng tên biến chữ thường mà không phải lo lắng về xung đột tên với các chương trình khác. Tất nhiên đây chỉ là quy ước, không có giới hạn kỹ thuật nào trong việc giới hạn tên của các biến môi trường để phiên bản chữ thường có thể được sử dụng trong một số trường hợp, nhưng thực tế tốt nhất là chữ hoa và hãy nhớ rằng chúng phân biệt chữ hoa chữ thường để chúng có thể khác nhau các giá trị.
http_proxy
và anh chị em của nó thường là chữ thường.
http_proxy
và bạn bè sẽ được đánh vần bằng chữ thường, vi phạm quy ước. Đối với một ứng dụng để sử dụng HTTP_PROXY
sẽ là một lỗi vì nó sẽ không tương thích với phần còn lại của thế giới.
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
-> Đối với hồ sơ, tôi chỉ phát hiện ra rằng docker 17.04.0-ce chỉ vinh danh NO_PROXY.