web-dev-qa-db-fra.com

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

Chaque fois que j'ouvre un terminal, j'ai cette variable définie:

$ 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.bashrc et /etc/environment et c'est nulle part là-bas?!

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

9
klarki

Pour bash, exécutez:

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

puis utiliser

grep "http_proxy=" /tmp/mylog

pour le chercher.

Vous pouvez également limiter la recherche à /home et /etc pour 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.

source

16
Ravexina

Selon essentiellement le duplicata de ce que vous avez demandé sur site Unix et Linux , il existe deux façons de résoudre ce problème:

  1. utilisez la commande envet observez l'ordre dans lequel les variables ont été créées. Utilisez les variables précédentes et suivantes pour avoir une idée approximative de l'origine de la variable.
  2. encapsulez les fichiers que vous essayez d’examiner avec la commande set -x au début et à la fin du fichier pour voir ce que fait chaque fichier; potentiellement, ces fichiers sont en train d’approvisionner d’autres fichiers et set -x devrait indiquer explicitement où l’approvisionnement a lieu
  3. Pensez à parcourir certains des fichiers que vous pouvez avoir dans votre dossier de départ via find -type f -exec grep 'VARIABLE_NAME' {} \; ou simplement grep -rI 'VARIABLE'. Cela prend beaucoup de temps, donc ce n’est peut-être pas le meilleur résultat, mais bon - s’il n’ya pas de méthodes faciles, il ne faut pas laisser de côté les plus difficiles.
  4. Exécutez strace -v -s 10000 -e execve,open,read bash et observez ce qui est lu et ce qui est l'appel précédent open(). Cela pourrait être utile avec la redirection 2&>1 > output_trace.txt à lire plus tard et peut-être grepname__. 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'avez pas un ~/.bash_profile)
    • ~/.bash_login
  6. Selon Arch Wiki , certains programmes comme wgetutilisent cette variable. Vérifiez si vous avez un fichier .wgetrc ou /etc/wgetrc. Ceci peut être défini ici, bien que la source de bashest un autre mystère

6
Sergiy Kolodyazhnyy
Sudo grep -r http_proxy /etc

devrait faire l'affaire

2
byteborg

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

0
egmont