Где установлена ​​эта переменная среды?

10

Всякий раз, когда я открываю терминал, у меня установлена ​​эта переменная:

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

Где эта переменная устанавливается? Я проверил .bashrc, .bash_profile, /etc/bash.bashrcи /etc/environmentи это нигде там ?!

Я также посмотрел на настройки системы в разделе сети и прокси-сервер пуст.

klarki
источник

Ответы:

17

Для bashбега:

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

затем используйте

grep "http_proxy=" /tmp/mylog

искать его.

Вы также можете ограничить поиск /homeи /etcдля лучшего результата:

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

что означает, что это было установлено в моем ~/.bashrc.

источник

Ravexina
источник
6

По сути, дубликат того, что вы спрашивали на сайте Unix & Linux , есть несколько способов решения этой проблемы:

  1. используйте envкоманду и наблюдайте за порядком, в котором были созданы переменные, и используйте предшествующие и последующие переменные, чтобы получить общее представление о том, откуда эта переменная могла появиться
  2. оберните файлы, которые вы пытаетесь исследовать с помощью set -xкоманды в начале и конце файла, чтобы увидеть, что делает каждый файл; потенциально эти файлы получают другие файлы и set -xдолжны явно указывать, где происходит поиск
  3. Подумайте о том, чтобы просмотреть некоторые файлы, которые вы можете иметь в своей домашней папке, find -type f -exec grep 'VARIABLE_NAME' {} \;или просто grep -rI 'VARIABLE'. Это отнимает много времени, поэтому не может быть лучшим результатом, но эй - если нет простых методов, не стоит откладывать сложные.
  4. Запустите strace -v -s 10000 -e execve,open,read bashи наблюдайте за тем, что читается и каков предыдущий open()вызов. Это может быть полезно при 2&>1 > output_trace.txtперенаправлении читать позже и , возможно grep. Источник
  5. Вы упомянули .bashrc, .bash_profile, /etc/bash.bashrc и / etc / environment. Вам также необходимо проверить:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile(только если у вас нет ~/.bash_profile)
    • ~/.bash_login
  6. Согласно Arch Wiki , некоторые программы любят wgetиспользовать эту переменную. Проверьте, если у вас есть .wgetrcили /etc/wgetrcфайл. Это могло бы быть установлено там, хотя, где это получено, bashявляется другой загадкой

Сергей Колодяжный
источник
2
sudo grep -r http_proxy /etc

должен сделать трюк

byteborg
источник
0

gnome-terminal само по себе (то есть это поведение жестко запрограммировано в двоичный файл) устанавливает некоторые из этих переменных на основе значений gsetting для всего GNOME.

Эгмонт
источник