Переменная PATH в Linux: где bash ищет команды и как добавить папку
PATH — список папок, в которых bash ищет программу, когда вы набираете её имя. Если программа лежит в другой папке, bash её не найдёт и ответит, что команды нет. Ниже — как посмотреть PATH, добавить в него папку и не сломать его.
Содержание 9
Что сделать прямо сейчас
- Подключитесь к серверу — инструкция.
- Посмотрите PATH:
echo $PATH. Ответ — папки через двоеточие, например/usr/local/bin:/usr/bin:/binи ещё несколько. - Проверьте, где лежит программа:
command -v nano. Ответ/usr/bin/nano— полный путь к программе, bash её находит. - Если
command -vничего не ответил, программы с таким именем нет ни в одной папке из PATH: она не установлена или лежит в другой папке.
Как bash ищет команду
Когда вы набираете имя без косой черты, например nano, bash проверяет папки из PATH слева направо и запускает первую найденную программу с таким именем. Если ни в одной папке её нет, bash пишет, что команда не найдена (command not found), и завершает её с кодом 127 — его покажет echo $?.
Если в имени есть косая черта, PATH не нужен: bash запускает файл по указанному пути. Поэтому скрипт из текущей папки запускают так: ./backup.sh, а программу из любой папки — полным путём: /opt/myapp/bin/myapp.
Найденные пути bash запоминает. Если программу перенесли в другую папку, а bash ищет её на старом месте, сбросьте память: hash -r.
Как посмотреть PATH и найти программу
| Команда | Что покажет |
|---|---|
echo $PATH | все папки PATH одной строкой через двоеточие |
command -v nano | полный путь к программе, которую запустит bash |
type -a nano | все места, где есть программа с таким именем |
echo $? | код завершения прошлой команды: 127 — команда не найдена |
Чтобы увидеть папки столбиком, по одной на строку:
echo "$PATH" | tr ':' '\n'Добавить папку до конца сеанса
Допустим, программа лежит в папке /opt/myapp/bin. Добавьте папку в начало PATH:
export PATH="/opt/myapp/bin:$PATH"$PATH в конце строки — это прежний список папок. Без него PATH будет состоять из одной новой папки, и перестанут находиться ls, nano и другие команды.
| Как записать | Что будет |
|---|---|
export PATH="/opt/myapp/bin:$PATH" | новая папка проверяется первой: если программа с тем же именем есть и в другой папке, запустится эта |
export PATH="$PATH:/opt/myapp/bin" | новая папка проверяется последней: программы из системных папок важнее |
Так PATH меняется только в этом окне терминала. После выхода с сервера изменение пропадёт.
Добавить папку навсегда
При входе по SSH bash читает файл ~/.profile в вашей домашней папке. Запишите команду туда:
- Проверьте, нет ли в домашней папке файлов
.bash_profileи.bash_login:ls -a ~. Bash читает только первый найденный из~/.bash_profile,~/.bash_login,~/.profile. Если.bash_profileесть, пишите в него, а не в.profile. - Откройте файл:
nano ~/.profile— как пользоваться nano. - В самом конце файла добавьте строку
export PATH="/opt/myapp/bin:$PATH". - Сохраните — Ctrl+O и Enter, выйдите — Ctrl+X.
- Примените без переподключения:
source ~/.profile. Или выйдите с сервера и войдите снова. - Проверьте:
command -v myappпокажет путь к программе.
Так PATH меняется только для вашего пользователя. Для других пользователей, для sudo и для задач cron списки папок свои — о них ниже.
Если PATH сломался
Если после правки на ls, nano и другие команды bash отвечает, что их нет, в PATH потерялись системные папки. Верните их до конца сеанса:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binЗатем исправьте строку в файле: nano ~/.profile — проверьте, что в ней есть $PATH. Если и nano не запускается, вызовите его полным путём: /usr/bin/nano ~/.profile.
Ошибки и как их исправить
| Что видно | Что значит | Что сделать |
|---|---|---|
| программа установлена, а команда не найдена | папки с программой нет в PATH | найдите папку и добавьте её в PATH — как |
| после export работает, после переподключения — нет | export действует только в одном сеансе | допишите строку в ~/.profile |
строка в ~/.profile есть, а PATH прежний | bash читает ~/.bash_profile вместо ~/.profile или вы не переподключились | проверьте ls -a ~ и выполните source ~/.profile |
| без sudo команда работает, с sudo — command not found | у sudo свой список папок secure_path | запустите программу полным путём — разбор ошибки |
| в терминале скрипт работает, в cron — нет | у cron свой короткий PATH | как задать PATH в cron |
./backup.sh отвечает Permission denied | у файла нет права на запуск | chmod +x backup.sh — подробнее |
| bash ищет программу на старом месте | bash запомнил прежний путь | hash -r |
Источники
- Справка bash для Ubuntu 24.04 — переменная PATH, порядок поиска команд, код 127, файлы, которые bash читает при входе, команды export, command, type и hash.
- Исходный код OpenSSH 9.6: session.c — при входе по SSH оболочка запускается как оболочка входа.
- Список файлов пакета nano в Ubuntu 24.04 — программа лежит в /usr/bin/nano.
Сверено 11 октября 2026 года.
Что почитать дальше
- sudo: command not foundпочему sudo не видит программу.
- cron не запускает скриптPATH в задачах по расписанию.
- Редактор nanoкак править файлы настроек.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026