Wo ist diese Umgebungsvariable gesetzt?

10

Immer wenn ich ein Terminal öffne, habe ich diese Variable gesetzt:

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

Wo wird diese Variable gesetzt? Ich habe überprüft .bashrc, .bash_profile, /etc/bash.bashrcund /etc/environmentund es ist da nirgends ?!

Ich habe mir auch die Systemeinstellungen im Netzwerkbereich angesehen und der Proxy ist leer.

klarki
quelle

Antworten:

17

Für den bashLauf:

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

dann benutze

grep "http_proxy=" /tmp/mylog

danach suchen.

Sie können die Suche auch auf /homeund /etcfür ein besseres Ergebnis beschränken:

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

was bedeutet, dass es in meinem eingestellt wurde ~/.bashrc.

Quelle

Ravexina
quelle
6

Entsprechend dem Duplikat dessen, was Sie auf der Unix- und Linux-Site gefragt haben , gibt es mehrere Möglichkeiten, um dieses Problem anzugehen:

  1. Verwenden Sie den envBefehl und beobachten Sie die Reihenfolge, in der Variablen erstellt wurden. Verwenden Sie vorhergehende und nächste Variablen, um eine ungefähre Vorstellung davon zu erhalten, woher die Variable möglicherweise stammt
  2. Wickeln Sie Dateien, die Sie mit dem set -xBefehl am Anfang und Ende der Datei untersuchen möchten, um zu sehen, was jede Datei tut. Möglicherweise beziehen diese Dateien andere Dateien und set -xsollten explizit angeben, wo die Beschaffung erfolgt
  3. Sehen Sie sich einige der Dateien an, die Sie möglicherweise über find -type f -exec grep 'VARIABLE_NAME' {} \;oder nur in Ihrem Home-Ordner haben grep -rI 'VARIABLE'. Dies ist zeitaufwändig und möglicherweise nicht das beste Ergebnis, aber hey - wenn es keine einfachen Methoden gibt, sollte man die harten nicht beiseite legen.
  4. Laufen Sie strace -v -s 10000 -e execve,open,read bashund beobachten Sie, was gelesen wird und was der vorhergehende open()Aufruf ist. Dies kann bei der 2&>1 > output_trace.txtUmleitung nützlich sein , um sie später und möglicherweise zu lesen grep. Quelle
  5. Sie haben .bashrc, .bash_profile, /etc/bash.bashrc und / etc / environment erwähnt. Sie müssen auch überprüfen:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile(nur wenn du keine hast ~/.bash_profile)
    • ~/.bash_login
  6. Laut Arch Wiki verwenden einige Programme wgetdiese Variable gerne . Überprüfen Sie, ob Sie haben .wgetrcoder /etc/wgetrcDatei. Dies könnte dort festgelegt werden, obwohl es ein bashweiteres Rätsel ist , woher es stammt

Sergiy Kolodyazhnyy
quelle
2
sudo grep -r http_proxy /etc

sollte den Trick machen

byteborg
quelle
0

gnome-terminal selbst (dh dieses Verhalten ist fest in die Binärdatei codiert) legt einige dieser Variablen basierend auf den GNOME-weiten gsetting-Werten fest.

egmont
quelle