Чи можна дізнатися, які файли встановлюють / додають до змінних оточення та їх порядок пріоритетності?


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.