Où cette variable d'environnement est-elle définie?

10

Chaque fois que j'ouvre un terminal, j'ai cet ensemble de variables:

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

Où cette variable est-elle définie? J'ai vérifié .bashrc, .bash_profile, /etc/bash.bashrcet /etc/environmentil n'y a nulle part là ?!

J'ai également regardé les paramètres système dans la section réseau et le proxy est vide.

klarki
la source

Réponses:

17

Pour la bashcourse:

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

puis utilisez

grep "http_proxy=" /tmp/mylog

pour le rechercher.

Vous pouvez également limiter la recherche à /homeet /etcpour un meilleur résultat:

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

ce qui signifie qu'il a été défini dans mon ~/.bashrc.

la source

Ravexina
la source
6

Selon essentiellement le double de ce que vous avez demandé sur le site Unix et Linux , il existe deux façons d'aborder ce problème:

  1. utilisez la envcommande et observez l'ordre dans lequel les variables ont été créées, et utilisez les variables précédentes et suivantes pour avoir une idée approximative d'où la variable peut provenir
  2. envelopper les fichiers que vous essayez d'étudier avec la set -xcommande au début et à la fin du fichier pour voir ce que fait chaque fichier; potentiellement, ces fichiers recherchent d'autres fichiers et set -xdoivent indiquer explicitement où se produit le sourçage
  3. Pensez à parcourir certains des fichiers que vous pouvez avoir dans votre dossier d'accueil via find -type f -exec grep 'VARIABLE_NAME' {} \;ou tout simplement grep -rI 'VARIABLE'. Cela prend du temps, donc ce n'est peut-être pas le meilleur résultat, mais bon - s'il n'y a pas de méthodes faciles, il ne faut pas mettre de côté les plus difficiles.
  4. Exécutez strace -v -s 10000 -e execve,open,read bashet observez ce qui est lu et quel est l' open()appel précédent . Cela pourrait être utile avec la 2&>1 > output_trace.txtredirection pour lire plus tard et peut-être grep. La source
  5. Vous avez mentionné .bashrc, .bash_profile, /etc/bash.bashrc et / etc / environment. Vous devez également vérifier:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile(seulement si vous n'en avez pas ~/.bash_profile)
    • ~/.bash_login
  6. Selon Arch Wiki , certains programmes aiment wgetutiliser cette variable. Vérifiez si vous pourriez avoir .wgetrcou /etc/wgetrcdéposer. Cela pourrait être réglé là-bas, bien que là où il se bashtrouve dans un autre mystère

Sergiy Kolodyazhnyy
la source
2
sudo grep -r http_proxy /etc

devrait faire l'affaire

byteborg
la source
0

gnome-terminal lui-même (c'est-à-dire que ce comportement est codé en dur au binaire) définit certaines de ces variables en fonction des valeurs de gsetting à l'échelle de GNOME.

egmont
la source