Глиф Учебники

Ошибка command not found

Справочник · Командная строка Linux · 2 минуты чтения

Сообщение bash: имя: command not found (в русской системе — «команда не найдена») значит, что оболочка не нашла программу с таким именем ни в одной папке из переменной PATH. Причины — от простых к редким.

1. Опечатка или регистр

Ls, sl, apt-gte — не команды. Регистр букв важен: Python3 и python3 — разные имена. Наберите начало команды и нажмите Tab: если оболочка её знает, она допишет имя сама.

2. Программа не установлена

Многих программ в системе нет, пока их не поставить. В Ubuntu терминал часто сам подсказывает, в каком пакете есть команда, и даёт готовую строку установки. В Debian, Ubuntu и Mint программы ставят так:

Bash
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):

Bash
ls ~/.local/bin
~/.local/bin/имя_программы
echo $PATH

Если программу только что поставили, откройте новый терминал или выполните hash -r: оболочка запоминает, где нашла команды, и иногда ищет по старой памяти.

5. Через sudo не находится, а без sudo — находится

sudo ищет команды не по вашему PATH, а по своему списку системных папок. Запустите по полному пути:

Bash
sudo "$(which имя_программы)"

6. $'\r': command not found в скрипте

Скрипт сохранён в Windows: в конце каждой строки лишний невидимый символ, и bash считает его частью команды. Уберите эти символы:

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. Верните стандартный список на время и исправьте файл:

Bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
nano ~/.bashrc