Чтобы lab-status находилась по имени, ~/tools добавляют в PATH. Хватит одной команды — пока не закроешь терминал.
Каталог ставят в начало списка — echo покажет его первым:
Справа от = — новый каталог, двоеточие и прежнее значение $PATH, так что старые каталоги остаются в списке. Запись PATH="$HOME/tools" без :$PATH заменила бы весь список, и ls с cp перестали бы находиться. export передаёт значение программам, которые запустит эта оболочка.
Такая настройка живёт, пока открыт этот терминал: после нового входа PATH снова прежний. Каждая новая интерактивная Bash выполняет команды из файла ~/.bashrc — постоянные настройки дописывают в его конец. Дописать строку можно в Vim или через >> из урока «Куда уходит вывод команды».
source ~/.bashrc выполняет файл в текущей оболочке — так правка действует сразу. Но значения от прошлых попыток в этой оболочке тоже остаются, поэтому окончательная проверка — новый вход.
Ты выполнил export PATH="$HOME/tools:$PATH", потом запустил новую оболочку командой bash, и lab-status в ней работает. Что это доказывает?
-
Новая
bashунаследовала PATH от оболочки, где был export, — файл здесь не участвовал. Загляни в него:tail -n 3 ~/.bashrc. -
export меняет окружение одной оболочки и программ, которые она запустит. Другие терминалы и пользователи его не видят.
-
export живёт в оболочках этого терминала. После нового входа PATH снова прежний, если строки нет в ~/.bashrc.
export передаёт PATH дочерним процессам, и новая bash получила его по наследству. Строку в ~/.bashrc проверяет оболочка с чистым окружением, как при новом входе, — так проверяет и упражнение ниже.
Главное в шаге
-
export PATH="$HOME/tools:$PATH"ставит каталог в начало списка и сохраняет прежние каталоги. -
exportдействует в этой оболочке и в программах, которые она запустит; для каждого нового входа строку дописывают в~/.bashrc.