Questão Onde uma variável bash (proxy) é definida


Eu tenho um problema com wget e descobri que minhas configurações de proxy estão erradas:

$ env | grep "proxy"
http_proxy=http://213.181.73.145:80
https_proxy=http://213.181.73.145:80

Então, quando tento baixar algo com wget, falha ao tentar se conectar ao proxy e não tentar se conectar ao recurso da web que preciso baixar.

Mas no modo superusuário tudo está correto:

$ sudo su
$ env | grep "proxy"
$

(saída vazia, sem proxy)

Eu quero saber onde essas variáveis ​​são configurações e encontrei muitos problemas. Eu adicionei a próxima linha ao início do meu /etc/profile:

env | grep "proxy"
echo "Hello"

E para mim, surpresa, ambas as variáveis ​​são configurações com os mesmos valores antes de qualquer arquivo de configuração ser carregado (/ etc / bashrc, ~ / .bashrc, etc):

(new terminal)
http_proxy=http://213.181.73.145:80
https_proxy=http://213.181.73.145:80
Hello
$

Além disso, eu trabalho com guake. Então, eu tentei o mesmo com um terminal comum, e para mim surpresa, (eu acho) o arquivo /etc/profile não é carregado, desde que eu não vejo nem as linhas de proxy, mas nem o echo "Hello" mensagem.

Então, eu gostaria de saber como é possível que http_proxy e https_proxy são definidos antes do carregamento /etc/profile e porque não vejo a mensagem "Olá" quando abro um terminal comum.


1


origem




Respostas:


A mensagem não é exibida quando você abre um terminal "normal" porque /etc/profile é lido apenas para shells de login, um terminal "normal" inicia um shell interativo de não-login. Veja minha resposta Aqui Para maiores informações.

Agora eu não sei onde você está http_proxy está definido. Dependendo do que é exatamente sua configuração, pode ser em vários lugares. Tente isto:

grep http_proxy /etc/bash.bashrc /etc/profile ~/.bashrc ~/.bash_login ~/.profile ~/bash_profile

A variável deve ser definida em um desses arquivos.


0





Algum arquivo que é executado na inicialização do shell está definindo as variáveis ​​de ambiente, como ~ / .bashrc, ~ / .bash_profile ou /etc/bash.bashrc

Você não precisa alterar nenhum arquivo para tirar a variável de proxy! Tudo o que você precisa fazer é usar o comando 'unset'!

$ unset http_proxy
$ unset https_proxy

Agora essas variáveis ​​de ambiente desapareceram! Se você não puder rastrear onde eles estão definidos, você pode adicioná-lo ao final do seu ~ / .bashrc e desmarcá-los para cada shell. Se você testá-lo novamente:

$ env | grep proxy
[nothing]

Você verá que eles foram embora!


0



Mas, a chave da questão é que essa variável é definida antes que qualquer arquivo de configuração seja carregado. A questão é onde uma variável pode ser definida antes de / etc / profile. - Peregring-lk