Как работает PATH в Bash

How Does Path Work Bash



Когда вы набираете команду в терминале Linux, вы обычно вызываете программу для выполнения определенной работы, например, ls , CD , rm , mkdir и т.д. Все эти программы находятся где-то в файловой системе, верно? Как bash узнает, где находятся эти программы?

Здесь вступают в игру переменные среды, особенно переменная PATH. Эта переменная сообщает bash, где искать эти программы. Давайте посмотрим, как работает PATH и как просматривать / изменять PATH.







Переменная окружения и $ PATH

В терминологии оболочки среда - это область, которую оболочка создает каждый раз, когда запускает сеанс. Для управления средой существуют переменные среды, обозначающие различные части среды. Значение переменной может быть строкой, местоположением каталога, значением или другими.



PATH - это такая переменная среды, которая отслеживает определенные каталоги. По умолчанию переменная PATH содержит следующие местоположения.



  • / usr / bin
  • / usr / sbin
  • / USR / местные / бен
  • / usr / местные / sbin
  • /являюсь
  • / sbin
  • / snap / bin (если Snap установлен)

Хотите узнать, какие каталоги в настоящее время зарегистрированы в PATH? Запустите терминал и выполните следующую команду.





$выбросил $ ПУТЬ

Здесь знак $ обозначает переменную. В выбросил команда печатает значение переменной PATH.



Итак, почему эта конкретная переменная среды так важна? Причина в том, как к нему обращается оболочка и система в целом. Переменная PATH хранит, где могут быть найдены исполняемые файлы. Всякий раз, когда выполняется какая-либо команда, оболочка ищет каталоги PATH для целевого исполняемого файла и запускает его.

Например, давайте протестируем выбросил команда. Здесь я запускаю команду echo.

$выбросилПривет, мир!

Где исполняемый файл выбросил ? Выполните следующую команду, чтобы узнать.

$который выбросил

Как видим, выбросил исполняемый файл находится в / usr / bin / echo. Где что находится? Давайте разберемся.

$который который

Он также находится в / usr / bin / which. Большинство командных инструментов находится в каталоге / usr / bin. Здесь bash обращается к PATH, чтобы найти места для поиска исполняемого файла (ов) команды.

Изменение PATH

Прежде чем мы изменим значение PATH, важно понять его структуру. Выполните команду еще раз, чтобы проверить значение PATH.

$выбросил $ ПУТЬ

Обратите внимание, что каждый из каталогов разделен знаком:.

Добавление каталога в PATH

Чтобы добавить пользовательский каталог в PATH, мы воспользуемся помощью файла bashrc. Это специальный сценарий bash, который загружается каждый раз при запуске нового сеанса bash. Обратите внимание, что файл bashrc уникален для каждого пользователя в системе Linux.

Откройте файл bashrc в текстовом редакторе. Если файла bashrc еще нет, редактор создаст его автоматически.

$я пришел~/.bashrc

Здесь это bashrc по умолчанию, который поставляется с Ubuntu. Перейдите к последнему файлу (если он существует) и добавьте следующую строку.

$экспорт ДОРОЖКАзнак равно'$ ПУТЬ: / '

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

Сохраните файл и скажите bash перезагрузить его.

$источник~/.bashrc

Проверим, успешно ли добавлен новый путь.

$выбросил $ ПУТЬ

Вуаля! ПУТЬ успешно обновлен! Теперь bash также будет искать исполняемые файлы по новому пути. У меня уже есть сценарий demo.sh на рабочем столе. Посмотрим, сможет ли bash вызвать его без указания точного местоположения.

$demo.sh

Ага, bash может вызвать его напрямую без каких-либо проблем.

Удаление каталога из PATH

Нет простого способа добавления / удаления каталогов из PATH. Позволь мне объяснить.

Значение PATH фактически фиксировано. Тогда как насчет трюка с bashrc? Bashrc - это сценарий bash, который загружается каждый раз при запуске сеанса. В bashrc мы только что объявили, что новое значение PATH будет его значением по умолчанию и пользовательским каталогом. Теперь каждый раз, когда bash загружается, он видит, что bashrc сообщает о назначении нового значения PATH, и это то, что он делает.

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

Давайте посмотрим на этот пример. Я хочу удалить каталог ~ / Desktop из PATH.

$выбросил $ ПУТЬ | sed -А также 's /: ~ / Рабочий стол $ //'

Если бы каталог был / home / неправильный / dir, команда выглядела бы так.

$выбросил $ ПУТЬ | sed -А также 's /: / home / неправильно / dir $ //'

Здесь самое интересное - это инструмент sed. Узнать больше о sed здесь а также здесь . Короче говоря, используя sed, мы изменяем вывод выбросил команда. Теперь мы можем использовать этот измененный вывод для изменения значения PATH.

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

$экспорт ДОРОЖКАзнак равно'$ (echo $ PATH | sed -e 's /: ~ / Desktop $ //')'

Кроме того, вы также можете вручную установить значение PATH. Это трудоемкий процесс, но более простой и понятный.

$экспорт ДОРОЖКАзнак равно/usr/местный/sbin:/usr/местный/являюсь:/usr/sbin:/usr/являюсь:/sbin:/являюсь:
/usr/игры:/usr/местный/игры:/щелчок/являюсь

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

$источник~/.bashrc

Проверим результат.

$выбросил $ ПУТЬ

Значение PATH обновлено!

Последние мысли

В bash важна переменная PATH. Любая программа, выполняющая сеанс bash, наследует переменную, поэтому важно, чтобы PATH содержал только необходимые каталоги. Добавление дополнительных каталогов только добавит избыточности в систему.

Чтобы увидеть все переменные среды для bash, выполните эту команду. Первая часть команды вернет все переменные среды, а вторая часть отсортирует вывод в порядке возрастания.

$env | Сортировать

Хотите оживить свой опыт bash? Псевдонимы Bash предлагают уникальный способ ускорить работу и оживить ее. Узнать больше о псевдонимах bash .

Наслаждаться!