Qual è il formato "giusto" per la variabile d'ambiente HTTP_PROXY? Caps o no caps?


Risposte:


27

Non esiste un'autorità centrale che assegni un significato ufficiale alle variabili di ambiente prima che le applicazioni possano utilizzarle. POSIX definisce il significato di alcune variabili ( PATH, TERM, ...) e le liste di molti altri in un modo non-normativo ad essere di uso comune, tutti in maiuscolo. http_proxye gli amici non sono tra questi.

Diversamente praticamente tutte le variabili d'ambiente convenzionali utilizzati da molte applicazioni, http_proxy, https_proxy, ftp_proxye no_proxysono comunemente minuscole. Non ricordo alcun programma che li capisca solo in maiuscolo, non riesco nemmeno a trovarne uno che li provi in ​​maiuscolo. Molti programmi usano solo la variante minuscola, tra cui lince, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2, ecc. Quindi per queste variabili, la forma giusta è quella minuscola.

Il nome minuscolo risale almeno al libern CERN 2.15 di marzo 1994 (grazie a Stéphane Chazelas per averlo individuato). Non so cosa abbia motivato la scelta del minuscolo, che sarebbe stato insolito anche allora.


1
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-> Per la cronaca, ho appena scoperto che la finestra mobile 17.04.0-ce onora solo NO_PROXY.
Jaume

gli script di cloudformation (cfn-signal, cfn-init) usano la variante maiuscola HTTPS_PROXY. la finestra mobile utilizza anche la variante maiuscola.
Felipe Alvarez,

le lettere minuscole non funzionerebbero per me quando provo ad aggiungere un repository ppa. sudo -E apt-add-repository ppa:xxxxx/xxxx. ho dovuto unset https_proxyeexport HTTPS_PROXY=http://a.b.c.d:xxxx
Mheni

7

Non esiste uno standard e vengono utilizzate entrambe le versioni maiuscole e minuscole a seconda dell'applicazione (vedere anche HTTPS_PROXY, ALL_PROXY, NO_PROXY).

Per esempio:

arricciare

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

idiota

http.proxy
   Override the HTTP proxy, normally configured using the http_proxy, https_proxy, 
   and all_proxy environment variables (see curl(1)). [..]

Pitone

urllib.request.getproxies() supporta entrambe le varianti minuscole e maiuscole.

Menziona anche un problema di sicurezza:

Se è impostata la variabile di ambiente REQUEST_METHOD, che di solito indica che lo script è in esecuzione in un ambiente CGI, la variabile di ambiente HTTP_PROXY (maiuscola _PROXY) verrà ignorata. Questo perché quella variabile può essere iniettata da un client usando l'intestazione HTTP “Proxy:”. Se è necessario utilizzare un proxy HTTP in un ambiente CGI, utilizzare ProxyHandler in modo esplicito o assicurarsi che il nome della variabile sia in minuscolo (o almeno il suffisso _proxy).


Alcune applicazioni consentono NO_PROXYdi contenere stelle / intervalli IP mentre altre no.


Così

export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy

dovresti averti coperto.


0

La convenzione prevede l'uso di tutte le variabili di ambiente capps durante l'esportazione, in modo che quando si scrivono script di shell sia possibile utilizzare nomi di variabili minuscole senza preoccuparsi delle collisioni di nomi con altri programmi. Naturalmente questa è solo una convenzione, non ci sono restrizioni tecniche sulla limitazione dei nomi delle variabili di ambiente, quindi in alcuni casi potrebbe essere utilizzata la versione minuscola, ma la migliore pratica è maiuscola e ricorda che sono sensibili al maiuscolo / minuscolo, quindi potrebbero avere differenti valori.


A differenza della maggior parte delle variabili di ambiente (in sostanza, tutte) convenzionali, http_proxye i suoi fratelli sono generalmente minuscoli.
Gilles 'SO- smetti di essere malvagio' il

@Gilles sarebbe un bug.
hildred,

3
No, non lo è. Hai ragione sul fatto che esiste una convenzione per utilizzare le maiuscole per le variabili di ambiente, ma è solo una convenzione, non una regola assoluta. Lo standard di fatto per le variabili di ambiente http_proxye gli amici deve essere scritto in minuscolo, in violazione di una convenzione. Per un'applicazione da utilizzare HTTP_PROXYsarebbe un bug perché sarebbe incompatibile con il resto del mondo.
Gilles 'SO- smetti di essere malvagio' il

1
snarf richiede lettere maiuscole e c'è una segnalazione di bug contro wget.
hildred il

1
È all'indietro. Quando un comportamento è in atto da 20 anni, giusto o sbagliato, è così e non cambierà. Penso che il pioniere fosse la lince (è più vecchio del web); Non so perché abbia usato lettere minuscole. Curl è iniziato come maiuscolo, poi è cambiato in minuscolo per compatibilità con lynx e wget .
Gilles 'SO- smetti di essere malvagio'


-1

Entrambi http_proxyeHTTP_PROXY dovrebbero funzionare su sistemi basati su RHEL e Ubuntu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.