Onde esta variável de ambiente é definida?

9

Sempre que eu abro um terminal eu tenho essa variável definida:

$ echo $http_proxy
http://127.0.0.1:8888/

Onde esta variável está sendo ajustada? Eu verifiquei .bashrc , .bash_profile , /etc/bash.bashrc e /etc/environment e não está lá?!

Eu também observei as configurações do sistema na seção de rede e o proxy está vazio.

    
por klarki 28.07.2017 / 12:02

4 respostas

16

Para bash run:

PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7> /tmp/mylog

use então

grep "http_proxy=" /tmp/mylog

para procurar por ele.

Você também pode limitar a pesquisa a /home e /etc para um melhor resultado:

$ grep "http_proxy=" /tmp/mylog | grep -e /home -e /etc
++/home/ravexina/.bashrc> http_proxy=http://test:80

o que significa que foi definido no meu ~/.bashrc .

fonte

    
por Ravexina 28.07.2017 / 12:32
6

De acordo com essencialmente a duplicata do que você pediu em Unix & amp; Site Linux , existem algumas maneiras de abordar esse problema:

  1. use o comando env e observe a ordem em que as variáveis foram criadas e use variáveis anteriores e próximas para ter uma ideia aproximada de onde a variável pode ter vindo
  2. agrupe os arquivos que você tenta investigar com o comando set -x no início e no final do arquivo para ver o que cada arquivo faz; potencialmente, esses arquivos estão obtendo outros arquivos, e set -x deve declarar explicitamente onde a terceirização ocorre
  3. Considere passar por alguns dos arquivos que você pode ter em sua pasta pessoal usando find -type f -exec grep 'VARIABLE_NAME' {} \; ou apenas grep -rI 'VARIABLE' . Isso é demorado, então pode não ser o melhor resultado, mas ei - se não há métodos fáceis, não se deve deixar de lado os mais difíceis.
  4. Execute strace -v -s 10000 -e execve,open,read bash e observador o que está sendo lido e qual é a chamada open() anterior. Isso pode ser útil com o redirecionamento 2&>1 > output_trace.txt para leitura posterior e talvez grep . Fonte
  5. Você mencionou .bashrc, .bash_profile, /etc/bash.bashrc e / etc / environment. Você também precisa verificar:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile (apenas se você não tiver um ~/.bash_profile )
    • ~/.bash_login
  6. De acordo com Arch Wiki , alguns programas como wget usam essa variável. Verifique se você pode ter o arquivo .wgetrc ou /etc/wgetrc . Isso pode ser definido lá, embora onde é originado em bash é outro mistério

por Sergiy Kolodyazhnyy 28.07.2017 / 12:22
2
sudo grep -r http_proxy /etc

deve fazer o truque

    
por byteborg 29.07.2017 / 18:04
0

gnome-terminal em si (ou seja, esse comportamento é codificado para o binário) define algumas dessas variáveis com base nos valores de gaps do GNOME.

    
por egmont 30.07.2017 / 23:38