Onde esta variável de ambiente está definida?

10

Sempre que abro um terminal, tenho esta variável definida:

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

Onde essa variável está sendo definida? Eu verifiquei .bashrc, .bash_profile, /etc/bash.bashrce /etc/environmente isso não chega nem lá ?!

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

klarki
fonte

Respostas:

17

Para bashexecução:

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

então use

grep "http_proxy=" /tmp/mylog

para procurá-lo.

Você também pode limitar a pesquisa /homee /etcobter um resultado melhor:

$ 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

Ravexina
fonte
6

De acordo com essencialmente a duplicata do que você pediu no site Unix e Linux , existem duas maneiras de abordar esse problema:

  1. use o envcomando e observe a ordem em que as variáveis ​​foram criadas e use as anteriores e as próximas para ter uma idéia aproximada de onde a variável pode ter vindo
  2. agrupe os arquivos que você tenta investigar com o set -xcomando no início e no final do arquivo para ver o que cada arquivo faz; potencialmente esses arquivos estão adquirindo outros arquivos e set -xdevem declarar explicitamente onde ocorre o fornecimento
  3. Considere analisar alguns dos arquivos que você pode ter na sua pasta pessoal via find -type f -exec grep 'VARIABLE_NAME' {} \;ou apenas grep -rI 'VARIABLE'. Isso consome tempo, portanto pode não ser o melhor resultado, mas, ei - se não houver métodos fáceis, não se deve deixar de lado os difíceis.
  4. Execute strace -v -s 10000 -e execve,open,read bashe observe o que está sendo lido e qual é a open()chamada anterior . Isso pode ser útil com o 2&>1 > output_trace.txtredirecionamento para ler mais tarde 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(somente se você não tiver a ~/.bash_profile)
    • ~/.bash_login
  6. De acordo com o Arch Wiki , alguns programas como wgetusam essa variável. Verifique se você pode ter .wgetrcou /etc/wgetrcarquivar. Isso pode ser definido lá, embora o local de origem bashseja outro mistério

Sergiy Kolodyazhnyy
fonte
2
sudo grep -r http_proxy /etc

deve fazer o truque

byteborg
fonte
0

gnome-terminal ele mesmo (ou seja, esse comportamento é codificado permanentemente no binário) define algumas dessas variáveis ​​com base nos valores de configuração do GNOME.

Egmont
fonte