Qual é o formato 'certo' para a variável de ambiente HTTP_PROXY? Caps ou sem caps?

25

Eu encontrei ambos http_proxye HTTP_PROXY. Ambas as formas são equivalentes? Um deles tem precedência sobre o outro?

Mihai
fonte

Respostas:

27

Não há autoridade central que atribua um significado oficial às variáveis ​​de ambiente antes que os aplicativos possam usá-las. POSIX define o significado de algumas variáveis ( PATH, TERM...) e listas de vários outros de uma forma não-normativa como sendo de uso comum, todos eles em letras maiúsculas. http_proxye amigos não é um deles.

Ao contrário, basicamente, todas as variáveis de ambiente convencionais usados por muitas aplicações, http_proxy, https_proxy, ftp_proxye no_proxysão geralmente minúsculas. Não me lembro de nenhum programa que apenas os entenda em maiúsculas, nem consigo encontrar um que os tente em maiúsculas. Muitos programas usam apenas a variante minúscula, incluindo lynx, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2, etc. Portanto, para essas variáveis, a forma correta é a minúscula.

O nome em minúsculas remonta pelo menos ao CERN libwww 2.15 em março de 1994 (obrigado a Stéphane Chazelas por localizá-lo). Não sei o que motivou a escolha de letras minúsculas, o que teria sido incomum até então.

Gilles 'SO- parar de ser mau'
fonte
11
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-> Para constar, acabei de descobrir que a janela de encaixe 17.04.0-ce apenas honra o NO_PROXY.
jaume
scripts de formação em nuvem (cfn-signal, cfn-init) usam a variante maiúscula HTTPS_PROXY. A janela de encaixe também usa a variante maiúscula.
Felipe Alvarez
minúsculas não funcionaria para mim, ao tentar adicionar um repositório ppa. sudo -E apt-add-repository ppa:xxxxx/xxxx. eu tive que unset https_proxyeexport HTTPS_PROXY=http://a.b.c.d:xxxx
Mheni
7

Não há padrão e as versões maiúsculas e minúsculas são usadas dependendo do aplicativo (consulte também HTTPS_PROXY, ALL_PROXY, NO_PROXY).

Por exemplo:

ondulação

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)). [..]

Python

urllib.request.getproxies() suporta variantes em minúsculas e maiúsculas.

Ele também menciona um problema de segurança:

Se a variável de ambiente REQUEST_METHOD estiver configurada, o que geralmente indica que seu script está sendo executado em um ambiente CGI, a variável de ambiente HTTP_PROXY (_PROXY maiúscula) será ignorada. Isso ocorre porque essa variável pode ser injetada por um cliente usando o cabeçalho HTTP "Proxy:". Se você precisar usar um proxy HTTP em um ambiente CGI, use ProxyHandler explicitamente ou verifique se o nome da variável está em minúscula (ou pelo menos o sufixo _proxy).


Alguns aplicativos permitem NO_PROXYconter intervalos de estrelas / ip, enquanto outros não.


tão

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

você deve ter coberto.

Laktak
fonte
0

A convenção é usar todas as variáveis ​​de ambiente capps ao exportá-las, para que, ao escrever scripts shell, você possa usar nomes de variáveis ​​em minúsculas sem se preocupar com colisões de nomes com outros programas. Obviamente, isso é apenas uma convenção, não há restrição técnica para limitar os nomes das variáveis ​​de ambiente; portanto, a versão em minúscula pode ser usada em alguns casos, mas a melhor prática é em maiúscula e lembre-se de que elas fazem distinção entre maiúsculas e minúsculas e que podem ter diferentes valores.

hildred
fonte
Ao contrário da maioria das variáveis ​​de ambiente convencionais (basicamente todas), http_proxye seus irmãos geralmente são minúsculos.
Gilles 'SO- stop being evil'
@ Gilles isso seria um bug.
Hildred
3
Não é não. Você está certo de que existe uma convenção para usar maiúsculas para variáveis ​​de ambiente, mas é apenas uma convenção, não uma regra absoluta. O padrão de fato para as variáveis ​​de ambiente http_proxye amigos deve ser escrito em letras minúsculas, violando uma convenção. Para um aplicativo, HTTP_PROXYseria um bug, porque seria incompatível com o resto do mundo.
Gilles 'SO- stop be evil'
11
O snarf requer letras maiúsculas e existe um relatório de bug contra o wget.
Hildred
11
Isso é atrasado. Quando um comportamento existe há 20 anos, certo ou errado, é assim que é e não será alterado. Eu acho que o pioneiro era o lince (é mais antigo que a web); Não sei por que usou letras minúsculas. O Curl começou como maiúsculo e depois mudou para minúsculo para compatibilidade com o lynx e o wget .
Gilles 'SO- stop be evil'
0

WGET - está usando apenas as configurações de proxy em minúsculas!

MeneerBij
fonte
-1

Ambos http_proxye HTTP_PROXYdevem funcionar em sistemas baseados em RHEL e ubuntu.

Karthik K
fonte