Попытка понять, как устанавливается PATH в Linux (bash в Ubuntu 16.04) - PullRequest
0 голосов
/ 31 октября 2019

РЕДАКТИРОВАТЬ

Ответ на мой вопрос на самом деле очевиден, я просто забыл о значении ключевого слова EXPORT. Я все еще опускаю объяснение здесь, на всякий случай.

Итак, в нескольких словах, при открытии терминала с помощью Ctrl-Alt T создается новая оболочка, которая является дочерней по отношению к оболочке, созданной при входе в систему. Как объяснено здесь , оболочка логина инициализируется чтением / etc / profile и, как объяснено здесь и более конкретно здесь элементовсреда передается дочерним процессам, в частности переменным с префиксом ключевого слова EXPORT.

Я пытаюсь понять, каков механизм, при котором PATH устанавливается под linux при открытии нового (виртуального) терминала.

Я знаю, что можно изменить PATH в нескольких файлах (например, в системе: / etc / {profile , bash.bashrc , ...} или пользователь: ~ / {. Profile , .bash_login , .bashrc ...}, некоторые из которых читаются при входе в систему, а другие - при открытии новых (виртуальных) терминалов.

Согласно моим тестам, это профиль "" "файлы читаются при запуске (когда пользователь входит в систему), который регистрирует некоторые значения запуска для таких переменных, как PATH. Затем, каждый раз, когда открывается терминал, эти значения запуска передаются другому сценарию (например, * 1034). * bashrc ) для дальнейшей настройки, что приводит к чему-то вроде: PATH_IN_TERMINAL=$BASHRC_ADDONS:$PATH_FROM_PROFILE

Примечательно, что ~ / .profile обычно не читается после входа в систему. не имеет никакого эффекта в текущем сеансе, и PATH_FROM_PROFILE часть PATH останется неизменной доснова войти в систему (например, после выхода из системы или через ssh-соединение).

Я прав? И если да, где я могу найти документ на эту тему?

Спасибо

1 Ответ

0 голосов
/ 31 октября 2019

Это лучшее объяснение, которое я нашел по этому вопросу: Файлы запуска

Простое объяснение, в большинстве распространенных ситуаций:

  1. После первоначального входа в систему на хосте прочитайте /etc/profile, а затем первый из ~/.bash_profile, ~/.bash_login или ~/.profile. ~/.profile поддерживается несколькими оболочками, поэтому предпочтительнее.

  2. Когда Bash запускается, но не сразу после входа в систему, читайте ~/.bashrc.

Итак, profile файлы предназначены для запуска при входе в систему и должны использоваться для печати исходных сообщений (например, «Предупреждение о безопасности», «Сообщение дня»), проверки почты и настройки параметров / переменных, которые редко изменяются. Либо общесистемные (квоты, MOTD и т. Д.), Либо пользовательские (часовой пояс, локаль, терминал и т. Д.). Файлы

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

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

ПРИМЕЧАНИЕ. Вышеуказанное относится только к интерактивным оболочкам (например, работающим на терминале). Ни один из этих файлов не читается, если bash запускается неинтерактивно (например, через cron). В этих случаях вы должны создать другой файл, содержащий необходимые переменные, и указать это в файле среды BASH_ENV.

...