Por que wget não lê HTTP_PROXY em formato de letras maiúsculas?

2

Eu sei que no unix / linux as variáveis do ambiente são maiúsculas, como LD_LIBRARY_PATH ; HOME ; $USER e assim por diante. Hoje jogando com o wget eu vi este comando apenas usa variáveis de ambiente em minúsculas:

env | grep -i proxy
http_proxy=http://10.0.0.120:8080
wget -q http://google.it
echo $?
0
unset http_proxy
export HTTP_PROXY=http://10.0.0.120:8080
wget -q http://google.it
echo $?
1

Por que wget não lê HTTP_PROXY em formato de letras maiúsculas?

    
por c4f4t0r 03.02.2014 / 19:36

3 respostas

3

Este é apenas um palpite, mas os cronogramas do projeto sugerem que é para compatibilidade com versões anteriores do Lynx, que antecede o curl em alguns anos (e que usa variáveis de proxy em minúsculas).

    
por 03.02.2014 / 19:43
3

Resposta curta: Infelizmente, programas diferentes usam variáveis env diferentes.

Resposta longa, de ( link ):

Some programs (like wget) use environment variables of the form "protocol_proxy" to determine the proxy for a given protocol. (...) Some programs look for the all caps version of the environment variables.

No passado, criei um script simples que define as duas versões (todas em maiúsculas e versões "regulares" para ativá-las e desativá-las facilmente, e parece que essa é uma maneira comum de fazer as coisas, se necessário feito via env variables.

    
por 03.02.2014 / 19:46
1

O Unix faz distinção entre maiúsculas e minúsculas. O que significa que $ http_proxy e $ HTTP_PROXY são duas variáveis diferentes.

Veja isso:

user@foo[~]+ xx=2
user@foo[~]+ echo $xx
2
user@foo[~]+ echo $XX

user@foo[~]+ 
    
por 03.02.2014 / 20:10