Справочник

Переменная PATH в Linux: где bash ищет команды и как добавить папку

PATH — список папок, в которых bash ищет программу, когда вы набираете её имя. Если программа лежит в другой папке, bash её не найдёт и ответит, что команды нет. Ниже — как посмотреть PATH, добавить в него папку и не сломать его.

Обновлено 11.10.2026≈ 5 мин чтения
Содержание 9

Что сделать прямо сейчас

  1. Подключитесь к серверу — инструкция.
  2. Посмотрите PATH: echo $PATH. Ответ — папки через двоеточие, например /usr/local/bin:/usr/bin:/bin и ещё несколько.
  3. Проверьте, где лежит программа: command -v nano. Ответ /usr/bin/nano — полный путь к программе, bash её находит.
  4. Если 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 в вашей домашней папке. Запишите команду туда:

  1. Проверьте, нет ли в домашней папке файлов .bash_profile и .bash_login: ls -a ~. Bash читает только первый найденный из ~/.bash_profile, ~/.bash_login, ~/.profile. Если .bash_profile есть, пишите в него, а не в .profile.
  2. Откройте файл: nano ~/.profile — как пользоваться nano.
  3. В самом конце файла добавьте строку export PATH="/opt/myapp/bin:$PATH".
  4. Сохраните — Ctrl+O и Enter, выйдите — Ctrl+X.
  5. Примените без переподключения: source ~/.profile. Или выйдите с сервера и войдите снова.
  6. Проверьте: 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

Источники

Сверено 11 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 11.10.2026