Как исправить ошибку "command not found" в Ubuntu
Эта инструкция поможет вам устранить ошибку "command not found" (команда не найдена) в операционной системе Ubuntu. Мы рассмотрим как случаи, когда вы пытаетесь выполнить программу, которая не установлена, так и более се
Симптомы
- При попытке выполнить команду в терминале появляется сообщение типа "-bash: <имя_команды>: command not found".
- Ubuntu не предлагает варианты установки пакета для отсутствующей команды.
- Многие или все команды, включая базовые утилиты (например, 'open', 'awk'), не работают в терминале.
Возможные причины
- Программа, которую вы пытаетесь запустить, не установлена в вашей системе.
- Переменная окружения $PATH, которая указывает оболочке, где искать исполняемые файлы, настроена некорректно или повреждена.
- В некоторых случаях обработчик 'command_not_found_handle', отвечающий за автоматические подсказки по установке, может быть изменен или не работает должным образом.
Пошаговое решение
Проверьте и установите отсутствующую программу
Часто ошибка "command not found" возникает, когда нужная программа просто не установлена в вашей системе. Ubuntu обычно имеет встроенный механизм, который предлагает установить отсутствующий пакет, если он доступен в репозиториях. Например, если вы введете 'cpufetch', система может предложить 'sudo apt install cpufetch'. Если автоматических предложений нет, вы можете вручную использовать утилиту `command-not-found` для получения информации о том, какой пакет предоставляет нужную команду. Эта утилита представляет собой исполняемый Python-скрипт, который обычно находится в каталоге `/usr/lib/` и не включен в стандартную переменную окружения PATH для прямого вызова. Запустите утилиту, указав полный путь к ней. После получения рекомендации вы сможете установить пакет, используя `apt` или `snap`.
/usr/lib/command-not-found <имя_команды> Восстановите переменную окружения PATH
Если у вас не работают даже базовые команды, такие как `ls`, `cd`, `awk` или `open`, и при вводе любой команды постоянно выдается ошибка "command not found", это, скорее всего, указывает на серьезную проблему с переменной окружения `$PATH`. Эта переменная сообщает вашей оболочке (например, Bash), в каких каталогах искать исполняемые файлы программ. Если `$PATH` пуста, неправильно настроена или повреждена, оболочка не сможет найти ни одну команду. Для временного восстановления $PATH в текущей сессии терминала выполните следующую команду. Это позволит вам использовать основные системные команды. Если это решит проблему, но она возвращается после перезапуска терминала или системы, то, вероятно, поврежден или некорректно настроен один из файлов инициализации оболочки (например, `.profile` или `.bashrc`) в вашем домашнем каталоге. Вам потребуется отредактировать эти файлы, чтобы изменения PATH стали постоянными.
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin Проверьте и восстановите обработчик отсутствующих команд
В Ubuntu система автоматически обрабатывает команды, которые не найдены, с помощью специальной функции `command_not_found_handle` в Bash. Эта функция является так называемым "хуком" (hook), который срабатывает, когда оболочка не может найти команду. Она вызывает утилиту `command-not-found` для поиска и предложения установки соответствующего пакета. Если эта функция была изменена, удалена или повреждена, вы не будете получать эти удобные подсказки по установке отсутствующих программ. Вы можете проверить определение этой функции в вашей текущей оболочке. Стандартное определение функции `command_not_found_handle` включает логику для поиска исполняемого файла `command-not-found` в `/usr/lib/` или `/usr/share/command-not-found/` и его выполнения. Если вывод команды показывает, что функция отсутствует или выглядит некорректно (например, отличается от стандартного определения ниже), возможно, вам потребуется восстановить ее. Обычно это можно сделать путем переустановки пакета `command-not-found` (`sudo apt install --reinstall command-not-found`) или путем восстановления стандартных конфигурационных файлов оболочки. Если вы не уверены, как это сделать, рассмотрите возможность создания нового пользователя для проверки, работает ли там функция корректно, или обратитесь к документации Ubuntu для получения более детальных инструкций по восстановлению конфигурации Bash. Пример стандартного определения функции `command_not_found_handle`: ```bash command_not_found_handle () { if [ -x /usr/lib/command-not-found ]; then /usr/lib/command-not-found -- "$1"; return $?; else if [ -x /usr/share/command-not-found/command-not-found ]; then /usr/share/command-not-found/command-not-found -- "$1"; return $?; else printf "%s: command not found\n" "$1" 1>&2; return 127; fi; fi } ```
declare -f -p command_not_found_handle Операционная система Ubuntu, как и любой другой дистрибутив Linux, использует терминал для выполнения команд. Ошибка “command not found” (команда не найдена) — одно из самых распространенных сообщений, с которым сталкиваются пользователи. Оно означает, что оболочка не смогла найти исполняемый файл с указанным именем в каталогах, определенных в переменной окружения PATH. Эта проблема может проявляться по-разному: от отсутствия одной конкретной программы до неработоспособности большинства команд в системе.
В этой инструкции мы рассмотрим основные причины возникновения этой ошибки и предложим пошаговые решения, чтобы вы могли быстро вернуть вашу систему в рабочее состояние.
Шаг 1: Проверьте и установите отсутствующую программу
Часто ошибка “command not found” возникает, когда нужная программа просто не установлена в вашей системе. Ubuntu, основанная на Debian, использует менеджеры пакетов APT и Snap для установки программного обеспечения. В идеале, если вы введете команду для неустановленной программы, система должна предложить вам варианты ее установки.
Например, если вы попытаетесь запустить ‘cpufetch’, а он не установлен, Ubuntu может вывести сообщение вроде: `Command ‘cpufetch’ not found, but can be installed with: sudo snap install cpufetch
or
sudo apt install cpufetch`
Если таких автоматических предложений нет, вы можете вручную использовать утилиту command-not-found для получения информации о том, какой пакет предоставляет нужную команду. Эта утилита представляет собой исполняемый Python-скрипт, который обычно находится в каталоге /usr/lib/ и не включен в стандартную переменную окружения PATH для прямого вызова.
Действие: Запустите утилиту, указав полный путь к ней, чтобы получить рекомендации по установке:
Команда:
/usr/lib/command-not-found <имя_команды>
# Пример: /usr/lib/command-not-found cpufetch
Результат: Вы получите рекомендации по установке отсутствующей команды, которую затем сможете установить с помощью sudo apt install <имя_пакета> или sudo snap install <имя_пакета>.
Шаг 2: Восстановите переменную окружения PATH
Если у вас не работают даже базовые команды, такие как ls, cd, awk или open, и при вводе любой команды постоянно выдается ошибка “command not found”, это, скорее всего, указывает на серьезную проблему с переменной окружения $PATH. Эта переменная сообщает вашей оболочке (например, Bash), в каких каталогах искать исполняемые файлы программ. Если $PATH пуста, неправильно настроена или повреждена, оболочка не сможет найти ни одну команду.
Действие: Для временного восстановления $PATH в текущей сессии терминала выполните следующую команду. Это позволит вам использовать основные системные команды:
Команда:
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
Результат: Большинство стандартных команд должны снова стать доступными для выполнения в текущей сессии терминала.
Важно: Эта команда восстанавливает $PATH только для текущей сессии. Если проблема возвращается после перезапуска терминала или системы, то, вероятно, поврежден или некорректно настроен один из файлов инициализации оболочки (например, .profile или .bashrc) в вашем домашнем каталоге. Проверьте их содержимое на наличие ошибок или неправильных настроек, которые могли бы перезаписывать или очищать переменную $PATH. Вам потребуется отредактировать эти файлы, чтобы изменения PATH стали постоянными.
Шаг 3: Проверьте и восстановите обработчик отсутствующих команд
В Ubuntu система автоматически обрабатывает команды, которые не найдены, с помощью специальной функции command_not_found_handle в Bash. Эта функция является так называемым “хуком” (hook), который срабатывает, когда оболочка не может найти команду. Она вызывает утилиту command-not-found для поиска и предложения установки соответствующего пакета. Если эта функция была изменена, удалена или повреждена, вы не будете получать эти удобные подсказки по установке отсутствующих программ.
Действие: Вы можете проверить определение этой функции в вашей текущей оболочке. Стандартное определение функции command_not_found_handle включает логику для поиска исполняемого файла command-not-found в /usr/lib/ или /usr/share/command-not-found/ и его выполнения.
Команда:
declare -f -p command_not_found_handle
Результат: Вы увидите определение функции command_not_found_handle, если она существует. Пример стандартного определения:
command_not_found_handle ()
{
if [ -x /usr/lib/command-not-found ]; then
/usr/lib/command-not-found -- "$1";
return $?;
else
if [ -x /usr/share/command-not-found/command-not-found ]; then
/usr/share/command-not-found/command-not-found -- "$1";
return $?;
else
printf "%s: command not found\n" "$1" 1>&2;
return 127;
fi;
fi
}
Если вывод команды показывает, что функция отсутствует или выглядит некорректно (например, отличается от приведенного выше), возможно, вам потребуется восстановить ее. Обычно это можно сделать путем переустановки пакета command-not-found (sudo apt install --reinstall command-not-found) или путем восстановления стандартных конфигурационных файлов оболочки. Если вы не уверены, как это сделать, рассмотрите возможность создания нового пользователя для проверки, работает ли там функция корректно, или обратитесь к документации Ubuntu для получения более детальных инструкций по восстановлению конфигурации Bash.
Источники
- askubuntu.com — проверено 30.05.2026
- ru.stackoverflow.com — проверено 30.05.2026
- en.wikipedia.org — проверено 30.05.2026
- en.wikipedia.org — проверено 30.05.2026