Ошибка command not found
Сообщение bash: имя: command not found (в русской системе — «команда не найдена») значит, что оболочка не нашла программу с таким именем ни в одной папке из переменной PATH. Причины — от простых к редким.
1. Опечатка или регистр
Ls, sl, apt-gte — не команды. Регистр букв важен: Python3 и python3 — разные имена. Наберите начало команды и нажмите Tab: если оболочка её знает, она допишет имя сама.
2. Программа не установлена
Многих программ в системе нет, пока их не поставить. В Ubuntu терминал часто сам подсказывает, в каком пакете есть команда, и даёт готовую строку установки. В Debian, Ubuntu и Mint программы ставят так:
sudo apt update
sudo apt install htopИмя пакета не всегда совпадает с именем команды: например, команда ifconfig — в пакете net-tools. Если не знаете пакет, найдите в интернете «имя_команды package» или посмотрите официальную страницу программы.
3. Свой скрипт без ./
Скрипт из текущей папки запускают с путём: ./backup.sh, а не backup.sh. Текущей папки в PATH нет.
4. Программа есть, но её папки нет в PATH
Так бывает с программами, поставленными не через системный менеджер пакетов: pip install --user, установщики из интернета, свои скрипты в ~/bin. Найдите, где лежит файл, и запустите по полному пути — если работает, добавьте папку в PATH (справка Как добавить папку в PATH):
ls ~/.local/bin
~/.local/bin/имя_программы
echo $PATHЕсли программу только что поставили, откройте новый терминал или выполните hash -r: оболочка запоминает, где нашла команды, и иногда ищет по старой памяти.
5. Через sudo не находится, а без sudo — находится
sudo ищет команды не по вашему PATH, а по своему списку системных папок. Запустите по полному пути:
sudo "$(which имя_программы)"6. $'\r': command not found в скрипте
Скрипт сохранён в Windows: в конце каждой строки лишний невидимый символ, и bash считает его частью команды. Уберите эти символы:
sed -i 's/\r$//' script.shИли поставьте пакет dos2unix и выполните dos2unix script.sh. В редакторе на Windows сохраняйте скрипты с концами строк «LF» (Unix), а не «CRLF».
7. Не находится вообще ничего
Если ls, nano и другие команды пишут command not found, сломан сам PATH — обычно ошибкой в ~/.bashrc вроде export PATH=папка без :$PATH. Верните стандартный список на время и исправьте файл:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
nano ~/.bashrc