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

19

Encontrei os dois http_proxy e HTTP_PROXY . Ambas as formas são equivalentes? Um deles tem precedência sobre o outro?

    
por Mihai 29.06.2015 / 17:54

4 respostas

24

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 várias outras de forma não normativa como sendo de uso comum, todas em maiúsculas. http_proxy e amigos não são um deles.

Ao contrário de basicamente todas as variáveis de ambiente convencionais usadas por muitos aplicativos, http_proxy , https_proxy , ftp_proxy e no_proxy geralmente são minúsculas. Não me lembro de nenhum programa que só os compreenda em letras maiúsculas, nem consigo encontrar um que os tente em maiúsculas. Muitos programas usam apenas a variante de letras minúsculas, 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 a CERW libwww 2.15 em março de 1994 (graças a Stéphane Chazelas por localizar isto). Eu não sei o que motivou a escolha de letras minúsculas, o que teria sido incomum até então.

    
por 30.06.2015 / 01:35
4

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

Por exemplo:

curl

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 as variantes minúsculas e maiúsculas.

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

If the environment variable REQUEST_METHOD is set, which usually indicates your script is running in a CGI environment, the environment variable HTTP_PROXY (uppercase _PROXY) will be ignored. This is because that variable can be injected by a client using the “Proxy:” HTTP header. If you need to use an HTTP proxy in a CGI environment, either use ProxyHandler explicitly, or make sure the variable name is in lowercase (or at least the _proxy suffix).

Alguns aplicativos permitem que NO_PROXY contenha estrelas / faixas de IP enquanto outros não.

Então

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

deve cobri-lo.

    
por 16.08.2017 / 15:12
0

A convenção é usar todas as variáveis de ambiente capps ao exportá-las, para que quando você estiver escrevendo scripts de shell, você possa usar nomes de variáveis minúsculas sem se preocupar com colisões de nomes com outros programas. Claro que isso é apenas uma convenção, não há restrição técnica para limitar os nomes de variáveis de ambiente, portanto, a versão em caixa baixa pode ser usada em alguns casos, mas a melhor prática é maiúscula e lembre-se de que eles diferenciam maiúsculas de minúsculas valores.

    
por 29.06.2015 / 22:05
-1

Tanto o http_proxy quanto o HTTP_PROXY devem funcionar nos sistemas baseados no RHEL e no Ubuntu.

    
por 29.06.2015 / 20:05