Что означает $PATH?

Я пытаюсь установить что-то, и среди шагов был этот:

"Поместите это на свой $PATH"

Что это значит? Что это такое?

Я искал и этот сайт, и в Google, но все считают это само собой разумеющимся!

3 ответа

Решение

Запустите в терминале:

echo $PATH

или же

printf "%s\n" "$PATH"

то, что вы видите, представляет собой список каталогов, выглядящий так:

/home/jacob/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Если вы поместите исполняемый файл в один из этих каталогов, вам не нужно указывать путь к исполняемому файлу / скрипту, но вы можете запустить его по имени в качестве команды.

Исполняемые файлы в $PATH не должно иметь расширения языка по соглашению (хотя они будут работать)

Редактирование переменной $PATH

Вы можете (постоянно) добавить каталог в $PATH добавив следующую строку в ваш ~/.profile файл (невидимый по умолчанию, нажмите Ctrl+H в файловом менеджере, чтобы сделать его видимым):

export PATH=$PATH:/path/to/dir

Больше полезной информации о переменных среды

(такие как $PATH) можно найти здесь (спасибо за предложения @Letizia)

$PATH переменная среды, связанная с расположением файла

Когда вы вводите команду для запуска, система ищет ее в каталогах, указанных PATH в указанном порядке.

Вы можете просмотреть каталоги, указанные, набрав echo $PATH в терминале.

Предположим, есть исполняемый файл foobar01.sh присутствовать на /home/user/foo1/foo2/foobar01.sh который вы хотите выполнить на регулярной основе. ввод всего "пути" занял бы много времени. Таким образом, мы добавляем каталог в $PATH переменная, и мы можем выполнить foobar.sh непосредственно, даже не указывая путь.

Вы можете добавить его в $PATH введя следующую команду

export PATH=$PATH:/home/user/foo1/foo2

Я предполагаю, что вы пришли из фона Windows (извините, если это не так). В терминах непрофессионала, путь (или путь поиска) - это список каталогов, в которых будет выполняться поиск всего, что вы вводите в командной строке. Если вы введете встроенную команду, такую ​​как ls, она будет искать указанный список каталогов. Вы можете найти свой путь, набрав echo $PATH. Вот одно отличие между Windows и *nix: по умолчанию Windows всегда ищет исполняемый файл в текущем каталоге. Например, если у вас есть файл с именем uptime.bat в c:\myscripts, и вы cd c:\myscripts и введите uptime, он запустится. Однако в * nix будет использован путь и найден исполняемый файл (если имеется).

Если вы храните свои скрипты в каталоге / home / teresa / scripts, чтобы выполнить эти скрипты, вам нужно будет указать полный путь к этому каталогу. Пример: /hone/teresa/checkHost. Вариантом может быть cd / home / teresa, а затем введите./checkHost (обратите внимание на./, что означает, что вы явно просите файл запустить из текущего каталога.

Чтобы избежать этого, вы можете просто набрать

экспорт PATH=$PATH:/home/teresa/scripts

Это означает, что, в дополнение к уже существующему пути, также выполните поиск в / hone / teresa / scripts. Однако проблема заключается в том, что после выхода из системы этот параметр исчезнет. Итак, вы должны отредактировать скрытый файл ~/.bashrc, найти там строку PATH и добавить ее соответственно. Я предполагаю, что вы используете Bash. В случае других оболочек синтаксис и файл различны.

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

НТН

Другие вопросы по тегам