command not found (bash и zsh)
Коротко: Оболочка не находит введённую программу ни в папках PATH, ни как встроенную команду.
Подробнее: Сообщение: bash: foo: command not found или zsh: command not found: foo. Оболочка ищет программы в папках переменной окружения PATH. Если команда там не найдена, появляется эта ошибка (код выхода 127).
Подробности
Причины
- Опечатка в команде (
gtiвместоgit). - Программа не установлена.
- Она установлена, но её папка не в PATH (например,
~/.local/bin,/usr/local/bin,~/.cargo/bin). - Скрипт в текущей папке вызывается без
./. - После установки терминал не был перезапущен.
- Неверная строка shebang (
#!/bin/bsh) или окончания строк Windows (\r) в скрипте.
Решения
- Проверьте написание и дополните клавишей Tab.
- Установите:
sudo apt install имяпакета(или менеджер пакетов вашего дистрибутива). Оболочка часто уже даёт подсказки (пакетcommand-not-found). - Проверьте путь:
echo $PATH,which команда,type команда. - Добавьте в PATH (в
~/.bashrcили~/.zshrc):export PATH="$HOME/.local/bin:$PATH", затемsource ~/.bashrc. - Собственный скрипт: вызывайте
./script.sh, делайте исполняемым черезchmod +x script.sh. - При окончаниях строк
\r:dos2unix script.sh.
Примечание
Никогда не ставьте . (текущую папку) в начало PATH: злоумышленник мог бы подсунуть файл с обычным именем команды. В Windows аналогичное сообщение выглядит так: «The term … is not recognized as the name of a cmdlet …» или «… is not recognized as an internal or external command …».
См. также: Код выхода 126/127, Permission denied, bash