Когда вы вводите команду в командной строке, вы в основном говорите оболочке запустить исполняемый файл с заданным именем. В Linux эти исполняемые программы, такие как ls
, find
, file
и другие, обычно find
в нескольких разных каталогах вашей системы. Любой файл с исполняемыми разрешениями, хранящийся в этих каталогах, может быть запущен из любого места. Наиболее распространенные каталоги, содержащие исполняемые программы, — это /bin
, /sbin
, /usr/sbin
, /usr/local/bin
и /usr/local/sbin
.
Но как оболочка узнает, в каких каталогах искать исполняемые программы? Оболочка выполняет поиск по всей файловой системе?
Ответ прост. Когда вы вводите команду, оболочка просматривает все каталоги, указанные в $PATH
пользователя, в поисках исполняемого файла с таким именем.
В этой статье показано, как добавить каталоги в $PATH
в системах Linux.
Что такое $PATH
в Linux
Переменная среды $PATH
представляет собой список каталогов, разделенных двоеточиями, который сообщает оболочке, в каких каталогах следует искать исполняемые файлы.
Чтобы проверить, какие каталоги находятся в вашем $PATH
, вы можете использовать команду printenv
или echo
:
echo $PATH
Результат будет выглядеть примерно так:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Если у вас есть два исполняемых файла с одинаковым именем, расположенных в двух разных каталогах, оболочка запустит файл, который находится в каталоге, который идет первым в $PATH
.
Добавление каталога в ваш $PATH
Бывают ситуации, когда вы можете захотеть добавить другие каталоги в $PATH
. Например, некоторые программы могут быть установлены в разных местах или вы можете захотеть иметь специальный каталог для ваших личных сценариев, но иметь возможность запускать их, не указывая абсолютный путь к исполняемым файлам. Для этого вам просто нужно добавить каталог в ваш $PATH
.
Допустим, у вас есть каталог bin
расположенный в вашем домашнем каталоге, в котором вы храните сценарии оболочки. Чтобы добавить каталог в ваш $PATH
введите:
export PATH="$HOME/bin:$PATH"
Команда export
экспортирует измененную переменную в среду дочернего процесса оболочки.
Теперь вы можете запускать свои сценарии, вводя имя исполняемого сценария без необходимости указывать полный путь к файлу.
Однако это изменение носит временный характер и действует только в текущем сеансе оболочки.
Чтобы сделать изменение постоянным, вам необходимо определить $PATH
в файлах конфигурации оболочки. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:
- Глобальные файлы конфигурации оболочки, такие как
/etc/environment
и/etc/profile
. Используйте этот файл, если хотите, чтобы новый каталог был добавлен всем пользователям системы$PATH
. - Файлы конфигурации для конкретной оболочки пользователя. Например, если вы используете Bash, вы можете установить
$PATH
в файле~/.bashrc
. Если вы используете Zsh, имя файла~/.zshrc
.
В этом примере мы установим переменную в файле ~/.bashrc
. Откройте файл в текстовом редакторе и добавьте в конец следующую строку:
nano ~/.bashrc
export PATH="$HOME/bin:$PATH"
Сохраните файл и загрузите новый $PATH
в текущий сеанс оболочки с помощью source
команды:
source ~/.bashrc
Чтобы убедиться, что каталог был успешно добавлен, распечатайте значение вашего $PATH
, набрав:
echo $PATH
Добавить комментарий