Gdzie jest ustawiona ta zmienna środowiskowa?

10

Ilekroć otwieram terminal, mam ustawioną tę zmienną:

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

Gdzie ustawiana jest ta zmienna? Sprawdziłem .bashrc, .bash_profile, /etc/bash.bashrca /etc/environmenti to nigdzie nie ?!

Przejrzałem także Ustawienia systemowe w sekcji sieci i serwer proxy jest pusty.

klarki
źródło

Odpowiedzi:

17

Do bashuruchomienia:

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

następnie użyj

grep "http_proxy=" /tmp/mylog

szukać.

Możesz także ograniczyć wyszukiwanie do /homei /etcdla lepszego rezultatu:

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

co oznacza, że ​​zostało ustawione w moim ~/.bashrc.

źródło

Ravexina
źródło
6

Zgodnie z zasadniczo duplikatem tego, o co pytałeś na stronie Unix i Linux , istnieje kilka sposobów rozwiązania tego problemu:

  1. użyj envpolecenia i obserwuj kolejność, w której zmienne zostały utworzone, i użyj zmiennych poprzedzających i następnych, aby uzyskać ogólne pojęcie o tym, skąd mogła pochodzić zmienna
  2. zawiń pliki, które próbujesz zbadać za pomocą set -xpolecenia na początku i na końcu pliku, aby zobaczyć, co robi każdy plik; potencjalnie te pliki pozyskują inne pliki i set -xpowinny wyraźnie określać, gdzie ma miejsce pozyskiwanie
  3. Rozważ przejrzenie niektórych plików, które możesz mieć w folderze domowym za pośrednictwem find -type f -exec grep 'VARIABLE_NAME' {} \;lub po prostu grep -rI 'VARIABLE'. Jest to czasochłonne, więc może nie być najlepszym rezultatem, ale hej - jeśli nie ma łatwych metod, nie należy odkładać na bok tych trudnych.
  4. Uruchom strace -v -s 10000 -e execve,open,read bashi obserwuj, co jest czytane i jakie jest poprzednie open()wywołanie. Może to być przydatne z 2&>1 > output_trace.txtprzekierowaniem, aby przeczytać później, a może grep. Źródło
  5. Wspomniałeś o .bashrc, .bash_profile, /etc/bash.bashrc i / etc / environment. Musisz także sprawdzić:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile(tylko jeśli nie masz ~/.bash_profile)
    • ~/.bash_login
  6. Według Arch Wiki niektóre programy wgetużywają tej zmiennej. Sprawdź, czy możesz to zrobić .wgetrclub /etc/wgetrczłożyć. Można to tu ustalić, chociaż bashkolejna tajemnica dotyczy źródła

Sergiy Kolodyazhnyy
źródło
2
sudo grep -r http_proxy /etc

powinien załatwić sprawę

byteborg
źródło
0

gnome-terminal samo (to znaczy, to zachowanie jest zakodowane na stałe w binarnym) ustawia niektóre z tych zmiennych na podstawie wartości ustawiania dla całego środowiska GNOME.

egmont
źródło