Понимание переменной $ PATH
В этом руководстве мы покажем вам, как навсегда установить PATH в Linux.
Во-первых, почему вам должно быть до этого дело?
Переменная $ PATH или просто PATH без переменных, обозначающих $, задает список каталогов, которые критически влияют на функциональность вашей вычислительной платформы. Это потому, что $ PATH - это список каталогов, в которых система ищет исполняемые программы, сценарии или файлы.
Представьте, что вы пытаетесь запустить команду ssh
, например, для
подключения к серверу. Что произойдет, если система не сможет найти
программу ssh
? Вы не можете подключиться к серверам и выполнять
вычисления. У вас есть множество полезных программ, таких как python
,
javac
, npm
, make
, chmod
, apt-get
и т. Д., Которые ваш
компьютер должен найти, когда вы вызываете их из командной строки.
Переменная $ PATH - это ключ, который позволяет найти правильную программу и выполнить ее по вашей команде без необходимости указывать полный путь к каталогу исполняемого файла. Если ваш PATH установлен неправильно, ваша оболочка не сможет найти программы, и некоторые команды завершатся ошибкой.
Использование bash_profile для установки вашего PATH
Распространенной ошибкой с переменной $ PATH является установка ее только в текущей оболочке без сохранения изменений. Когда вы открываете новую оболочку, изменения теряются, и вы снова не можете выполнять определенные команды, потому что эти программы не найдены в PATH.
Первый способ установить постоянный $ PATH - это изменить переменную $
PATH в файле профиля Bash, расположенном по адресу
/home/<user>/.bash_profile
.
Например, предположим, что я хочу добавить новый каталог
/home/tomahawk/tools/jdk1.8.0_92/bin
в свой PATH. Вы можете узнать это
как установку Java Development Kit. Однако это не относится к делу. Что
бы ни содержал каталог, я могу добавить его к нашему пути и сделать
программы, bin
доступными из командной строки, добавив следующую
строку в конец файла ~/.bash_profile
:
...
export PATH="$PATH:/home/tomahawk/tools/jdk1.8.0_92/bin"
Хороший способ редактировать файл - использовать nano
, vi
, vim
или emacs
. Вы можете использовать команду
sudo <editor> ~/.bash_profile
и при появлении запроса ввести пароль
администратора, затем добавить эту строку в конец и сохранить файл.
Чтобы активировать изменения в текущей оболочке, вы должны «создать»
обновленный bash_profile
. Вы делаете это с помощью команды:
$ source ~/.bash_profile
Это просто импортирует настройки файла в текущую оболочку. Теперь каждый
раз, когда вы открываете свою оболочку, ваш bash_profile
будет
автоматически «загружаться», и вам не нужно будет каждый раз запускать
эту команду.
Теперь мы можем вызывать команды или программы в новом каталоге
/home/tomahawk/tools/jdk1.8.0_92/bin
, например javac
,
расположенный по адресу /home/tomahawk/tools/jdk1.8.0_92/bin/javac
,
просто набрав по адресу в командной строке имя программы. Теперь мы
можем сделать это из любого каталога, потому что PATH был обновлен для
поиска исполняемых программ в нашем новом каталоге.
Команда:
$ javac --version
Теперь запускаем правильную javac
, распечатывая что-то вроде
следующего:
Java Compiler, version 1.8.0_92
bash_profile
подходит, если вы хотите установить переменную PATH,
настроенную для одного пользователя системы. Если вы хотите установить
PATH для всех пользователей системы, есть лучшие способы сделать
это, о которых мы расскажем далее в этом руководстве.
Использование bashrc для установки вашего PATH
Вместо того, чтобы устанавливать PATH в ~/.bash_profile
, мы также
можем добавить каталоги, которые мы хотим, в PATH в ~/.bashrc
.
Установка PATH в bashrc
выглядит идентично тому, как мы устанавливаем
его в bash_profile
.
Например, чтобы включить каталог /home/tomahawk/.rbenv/bin
в свой
путь, я редактирую или создаю файл /home/tomahawk/.bashrc
, добавляя
следующую строку:
...
export PATH="$PATH:/home/tomahawk/.rbenv/bin"
Обратите внимание, что, как и в прошлый раз, первым делом в нашем новом экспорте PATH является включение существующей переменной $ PATH. Это гарантирует, что мы сохраним текущее значение PATH и просто добавим любые дополнительные каталоги в PATH после переменной $ PATH. Если вы этого не сделаете, вы полностью перезапишете переменную PATH и пропустите важные каталоги, в которых система должна находиться в PATH. В результате ваша система может прийти в негодность.
Разница между использованием bashrc
и bash_profile
заключается в
том, что bash_profile
используется для оболочек входа. Они
запускаются, когда вы входите в систему через консоль или входите в
систему с помощью ssh
. Напротив, как только вы войдете в систему и
откроете командную оболочку или запустите команду bash
, bashrc
будет запущен. После этого будут доступны ваши настройки PATH из
bashrc
Эффект от установки PATH аналогичен. Кроме того, мы должны активировать
любые изменения в bashrc
в текущей оболочке при первом внесении этого
изменения, как мы это сделали для файла bash_profile
На этот раз мы
запускаем source ~/.bashrc
. Теперь мы можем получить доступ к новому
пути в командной строке. Он установлен постоянно и останется неизменным
при нескольких входах в систему.
Использование файла профиля для установки пути
Мы также можем установить PATH постоянно, используя файл профиля
пользователя. Он отличается от ~/.bash_profile
тем, что он
устанавливается не только для оболочек, но и для всех программ.
Профили пользователей загружаются при входе в систему. Переменная PATH
может быть установлена в файле ~/.profile
Чтобы включить в свой PATH все, что уже находится в $ PATH, а также
новый каталог /home/tomahawk/.exenv/bin
, я редактирую файл в
~/.profile
и устанавливаю PATH следующим образом
export PATH="$PATH:/home/tomahawk/.exenv/bin"
Как и во всех предыдущих примерах, нам потребуется источник этих изменений, чтобы сделать их активными для текущей оболочки, но последующие входы в систему сохранят изменения.
Как только это будет сделано, я могу запустить команду exenv
, которая
является одной из программ, доступных в папке, которую я только что
добавил в PATH, и получить обратно результат моей версии exenv:
$ exenv version
1.3.4 (set by /home/tomahawk/.exenv/version)
Вы можете узнать больше о программе exenv здесь , но вы можете использовать этот процесс для постоянной установки PATH, чтобы включить любую программу или каталог, который вы хотите.
Постоянная установка вашего PATH для других оболочек, таких как ZSH и KSH
Если вы используете альтернативные оболочки, такие как zsh , ksh и другие, вы можете установить PATH постоянно, используя конфигурацию этих оболочек.
Как и bash , как zsh, так и ksh используют файлы zshrc и khsrc , соответственно, для установки пути для оболочек без входа в систему. Для оболочек входа они используют аналогичные файлы профилей оболочки zprofile и kprofile .
Таким образом, вы можете установить PATH для этих оболочек навсегда так
же, как мы сделали для Bash. Для zsh вы можете найти эти файлы или
создать их, если они не существуют, в ~/.zshrc
и ~/.zprofile
.
Точно так же вы можете установить PATH для ksh навсегда в файлах
конфигурации, расположенных в ~/.kshrc
и ~/.kprofile
.
Вы можете использовать множество других оболочек, например, оболочку C и оболочку tcsh. Постоянная установка PATH для них обычно будет следовать схеме, которую мы видели здесь.
Постоянная установка общесистемного ПУТЬ для всех пользователей
Общесистемные настройки для всех пользователей могут быть установлены в
/etc/profile
. Существует значительная гибкость и множество вариантов
для постоянной установки PATH для всей системы.
Ваша система Linux будет выполнять все файлы сценариев, оканчивающиеся
на .sh в /etc/profile.d
при каждом входе в оболочку bash, а также
при загрузке сеанса рабочего стола.
Поэтому вы можете добавить новый файл, например env.sh
в каталог
/etc/profile.d
. В этом файле мы можем экспортировать переменную PATH,
навсегда установив ее в соответствии с выбранным нами каталогом пути,
например:
export PATH="$PATH:/home/tomahawk/.rbenv/bin:/home/tomahawk/bin:/home/tomahawk/.local/bin"
Файлы в /etc/profile.d берутся из / etc / profile , таким образом активируя наш общесистемный PATH всякий раз, когда пользователь входит в систему.
Мы также можем установить PATH для всех пользователей в
/etc/environment
, который принимает пары ключ-значение в форме:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Устранение проблем с PATH
Как мы видели, постоянная установка PATH в Linux имеет много вариантов. Вы можете установить PATH только для определенного пользователя, для всех пользователей или только для определенных типов командных оболочек. Однако рекомендуется не возиться с общесистемными настройками PATH, если вы действительно не знаете, что делаете.
Если вы столкнулись с проблемами, хорошей отправной точкой является определение текущего значения $ PATH, выполнив команду:
$ echo $PATH
Дополнительные советы по устранению неполадок см. На этом ресурсе .