Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.
Таких местоположений несколько. Откуда операционная система знает где искать требуемую программу или её компонент? Всё просто — для этого используется переменная PATH. Эта переменная позволяет существенно сократить длину набираемых команд в терминале или в скрипте, освобождая от необходимости каждый раз указывать полные пути к требуемым файлам. В этой статье мы разберёмся зачем нужна переменная PATH Linux, а также как добавить к её значению имена своих пользовательских каталогов.
Переменная PATH в Linux
Для того, чтобы посмотреть содержимое переменной PATH в Linux, выполните в терминале команду:
echo $PATH
На экране появится перечень папок, разделённых двоеточием. Алгоритм поиска пути к требуемой программе при её запуске довольно прост. Сначала ОС ищет исполняемый файл с заданным именем в текущей папке. Если находит, запускает на выполнение, если нет, проверяет каталоги, перечисленные в переменной PATH, в установленном там порядке. Таким образом, добавив свои папки к содержимому этой переменной, вы добавляете новые места размещения исполняемых и связанных с ними файлов.
Для того, чтобы добавить новый путь к переменной PATH, можно воспользоваться командой export. Например, давайте добавим к значению переменной PATH папку/opt/local/bin. Для того, чтобы не перезаписать имеющееся значение переменной PATH новым, нужно именно добавить (дописать) это новое значение к уже имеющемуся, не забыв о разделителе-двоеточии:
Теперь мы можем убедиться, что в переменной PATH содержится также и имя этой, добавленной нами, папки:
echo $PATH
Вы уже знаете как в Linux добавить имя требуемой папки в переменную PATH, но есть одна проблема — после перезагрузки компьютера или открытия нового сеанса терминала все изменения пропадут, ваша переменная PATH будет иметь то же значение, что и раньше. Для того, чтобы этого не произошло, нужно закрепить новое текущее значение переменной PATH в конфигурационном системном файле.
В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:
sudo vi /etc/environment
Можно поступить и иначе. Содержимое файла .bashrc выполняется при каждом запуске оболочки Bash. Если добавить в конец файла команду export, то для каждой загружаемой оболочки будет автоматически выполняться добавление имени требуемой папки в переменную PATH, но только для текущего пользователя:
vi ~/.bashrc
Выводы
В этой статье мы рассмотрели вопрос о том, зачем нужна переменная окружения PATH в Linux и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.
>> Сначала ОС ищет исполняемый файл с заданным именем в текущей папке.
А вот, хрена с два! -- Это в Шиндовсе так. Но в Линуксе всё совсем по другому!
Прежде чем других учить Линуксу, было бы не худо самому изучить вопрос.
Если есть что предложить дельное для людей, преподнесите! А ветер гонять, пустое дело. Автору респект. Ни раз уже выручали его статьи.
Большое спасибо. вы очень помогли мне)
В текущем каталоге искал команды дос, а линукс нет.
Чтобы выполнить програму или скрипт в текущем каталоге надо указать ./программа
Привет ADMIN! Помоги! Где в RHEL/CentOS/Fedora находится глобальный файл PATH для всех юзеров компьютера + для удаленных подключений (я так понял они разные). Допиши пожалуйста в статью.
Накидайте лукасов, чтобы ADMIN увидел сообщение. Спасибо
подскажите пожалуйста, где находится переменная PATH в Oracle Linux
На Ubuntu 22.04. Если выполнить echo $PATH, потом export PATH=$PATH:/адрес, а потом снова echo $PATH то вы увидете, что вместо добавления вашего адреса, там вообще всё удалиться и останется только указанная вами папка. И если не восстановить всё вручную после перезапуска Ubuntu не примет пароль из-за проблем с PATH и вы не сможите войти в Ubuntu до восстановления PATH или переустановки ОС.
$PATH - содержит текущее состояние переменной, и эта строка (PATH=$PATH:/адрес) в конец добавляет к уже имеющимся данным, новую директорию.
И второе - эта команда не сохраняет изменение после перезагрузки системы