Можно ли узнать, какие файлы устанавливаются / добавляются в переменные окружения, и каков их приоритет?

9

Некоторые из моих переменных окружения ( $PATH, $MANPATHи друзей) частично созданы в различных исходных файлах.

Я обнаружил, что хочу, чтобы команда или метод быстро собрали, какая часть в определенной переменной среды поступила из какого файла .

Мой $ PATH, например, очевидно было множество (добавляются к) в .bashrc, /etc/paths, /etc/paths.d/X11... и я все еще ищу, что последний таинственный файл , который избыточно создал дубликат определение пути по моему $PATH.

Требуется некоторое время, чтобы вручную определить файлы, которые вносят вклад в переменные среды. Должен быть полезный способ обойти эту ненужную работу по отслеживанию всех сеттеров ... или я один такой?

Хенрик
источник

Ответы:

6

Как правило , PATHустанавливается на начальное значение в высшей степени системно-зависимым образом с помощью программы , которая регистрирует вас ( pam_envявляется общим фактором), то /etc/profileи ~/.profileи файлы , которые они включают в себя идти , чтобы изменить это значение.

Удалите все изменения PATHв .bashrc, настройки среды не принадлежат .bashrc: см. Различие между .bashrc и .bash_profile .

Сначала попробуйте войти в текстовом режиме (например, с помощью ssh localhost), так как запуск сеанса намного проще, чем в графическом режиме.

Поставить set -xв начале /etc/profileи ~/.profile. Оболочка напечатает след того, что она делает в своем стандартном потоке ошибок; ищите назначения PATHв след.

Присвоение переменных окружению понятия не имеет: кто присваивает последние победы.

Жиль "ТАК - перестань быть злым"
источник
6

Ваш PATH может быть установлен где угодно, а не только в вашем файле .bashrc. Скорее всего, в вашей системе есть файл, /etc/profileи / или /etc/profile.localкоторый задает путь по умолчанию для всех пользователей вашей системы. Пользовательские изменения или дополнения к нему могут быть установлены в вашем .profileфайле, если они отсутствуют в вашем файле .bashrc, или вы можете просто использовать настройки по умолчанию в своей системе.

Если вы хотите внести изменения, которые влияют только на вас, я поместил бы их в вашу .profileформу, используя следующую форму:

export PATH=/new/directory:$PATH

тем самым редактируя текущий путь, а не переписывая его полностью.

Раздел «ПРИЗНАНИЕ» man bash(или здесь ) объясняет разницу между.profile и .bashrcи так далее, а также какие другие файлы и читаются и в каком порядке при входе в систему или запуске оболочки.

радостный
источник
1

Маловероятно, что механизм для этого существует. Подумайте, сколько существует способов изменить значение переменной env в оболочке.

Возможно, вам повезет с этим set -x.

Алекс
источник