Как исправить ошибку «command not found» в Linux

К чему стремится эта статья
Дать практические шаги по поиску и устранению причины ошибки «command not found» в любых дистрибутивах Linux. Подходит для начинающих и системных администраторов. Включены примеры, чеклисты и дерево принятия решения.
Важно: все команды и имена файлов в Linux чувствительны к регистру — ls и LS это разные вещи.
1. Короткие определения (1‑строчная глоссарий)
- PATH — список каталогов, где оболочка ищет исполняемые файлы.
- Оболочка (shell) — программа, принимающая ваши команды (bash, zsh и т. д.).
- Исполняемый файл — файл с правом на выполнение (x) или встроенная команда оболочки.
2. Почему появляется «command not found» — основные причины
- Опечатка или неверный регистр команды.
- Команда не установлена в системе.
- Исполняемый файл есть, но каталог не в PATH.
- Нет права на выполнение или нужны привилегии root.
- Ошибки в синтаксисе опций и аргументов.
3. Быстрая методика расследования (mini‑methodology)
- Скопируйте команду и вставьте в терминал — исключите опечатки.
- Запустите which <команда> или type <команда>.
- Если команда не найдена — проверьте установку пакета.
- Если файл есть локально — укажите полный путь или добавьте в PATH.
- Проверьте права (ls -l) и при необходимости выполните chmod +x или sudo.
4. Проверка синтаксиса и регистра
Linux чувствителен к регистру. Всегда используйте команды в том виде, в котором они документированы.
Пример: ssh для перенаправления портов использует опции, регистр которых важен:
ssh -fN -L 80:localhost:8080 user@remoteВ этой команде: -L и -N — это отдельные опции; иногда опции должны быть в верхнем регистре. Если вы ошибётесь в регистре, оболочка не выдаст подсказку и просто сообщит, что команда не найдена или опция некорректна.
Совет: используйте Tab‑дополнение для имён файлов и команд, чтобы снизить риск опечаток.
5. Проверка наличия команды: which, type, command -v
which git
type -a python3
command -v ls- which показывает путь к исполняемому файлу, если он в PATH.
- type сообщает, встроенная ли это команда оболочки или алиас.
- command -v возвращает путь или имя; полезно в скриптах.
Если эти утилиты ничего не возвращают, команда либо не установлена, либо не входит в PATH.
6. Указать полный путь к исполняемому файлу
Если вы скачали или скомпилировали программу в нестандартный каталог, укажите полный путь:
sudo /opt/ovf/ovftool --versionЕсли вы находитесь в каталоге с исполняемым файлом, запуск ./имя_файла обязателен, если каталог не в PATH:
./myscript.sh7. Добавление программы в PATH (правильно)
Не используйте пробелы вокруг знака равенства. Правильный синтаксис:
export PATH=$PATH:/opt/path/to/your/programПример для пользовательских инструментов .NET:
export PATH=$PATH:~/.dotnet/toolsЧтобы изменения вступили в силу в текущей сессии, выполните:
source ~/.bashrc
# или
source ~/.zshrcПроверьте результат:
echo $PATHВажно: если вы редактируете переменные в системных файлах (/etc/profile или /etc/environment), будьте осторожны — ошибки там могут нарушить вход в систему.
8. Проверка установки пакета
Если команда не встроенная и не находится в PATH — она, вероятно, не установлена.
- Debian/Ubuntu:
sudo apt update
sudo apt install - RHEL/Fedora:
sudo dnf install
# или
sudo yum install - Arch:
sudo pacman -S Совет: перед установкой выполните поиск по имени пакета (apt search, dnf search).
9. Права доступа и запуск с привилегиями
Проверьте права файла:
ls -l /opt/ovf/ovftoolЕсли у файла нет права на выполнение, добавьте его:
chmod +x /opt/ovf/ovftoolЕсли программа требует привилегий root, используйте sudo:
sudo /opt/ovf/ovftoolНе используйте sudo без необходимости. Просмотрите документацию программы, чтобы понять, когда нужны права root.
10. Когда проблема не в PATH и не в установке — примеры и контрпример
- Контрпример: команда есть и путь в PATH, но программа падает с ошибкой — это уже вопрос несовместимости версий, отсутствия зависимостей или проблем с библиотеками LD_LIBRARY_PATH.
- Контрпример: вы используете alias или функцию оболочки с тем же именем — type покажет это.
Если which/command -v возвращает путь, но программа всё ещё не запускается — проверьте вывод ошибки при запуске и ищите отсутствующие зависимости (ldd для бинарников).
11. Чеклист для быстрого исправления (role‑based)
Для пользователя:
- Убедитесь в отсутствии опечаток и верном регистре.
- Попробуйте Tab‑дополнение.
- Поищите пакет в репозиториях и установите его.
Для разработчика/скриптера:
- Используйте command -v в скриптах для проверки наличия команды.
- Не полагайтесь на относительные пути; используйте переменные конфигурации.
- Добавьте проверку прав выполнения в CI-пайплайн.
Для администратора:
- Добавьте общесистемные пути в /etc/profile.d/*.sh.
- Проверьте SELinux/AppArmor, если есть отказ в запуске.
- Обновите документацию для пользователей.
12. Decision tree (дерево принятия решения)
flowchart TD
A[Ошибка: command not found] --> B{Команда корректна?}
B -- Нет --> C[Исправьте опечатку / регистр]
B -- Да --> D[which / type / command -v]
D -- ничего не возвращает --> E{Установлен пакет?}
E -- Нет --> F[Установите пакет через пакетный менеджер]
E -- Да --> G{Файл в PATH?}
G -- Нет --> H[Добавьте в PATH или запустите полный путь]
G -- Да --> I{Есть права на исполнение?}
I -- Нет --> J[chmod +x или sudo]
I -- Да --> K[Проверьте зависимости и SELinux/AppArmor]13. Критерии приёмки
- Команда запускается без «command not found» в интерактивной сессии.
- Скрипты, в которых требовалась команда, успешно проходят тесты CI.
- Изменения в PATH задокументированы и воспроизводимы для других пользователей.
14. Дополнительные советы и меры безопасности
- Не добавляйте «.» или текущий каталог в PATH по умолчанию — это риск безопасности.
- Если используете скрипты от третьих лиц, проверьте их права и содержимое перед исполнением.
- При настройке системных переменных используйте /etc/profile.d/ для централизованного управления.


Итог и следующий шаг
Ошибка «command not found» — обычная и решаемая. Начните с простого: проверьте опечатки и регистр, затем which/type, затем установку пакета и PATH, и только потом — права и зависимости. Для повторяемости зафиксируйте изменения в скриптах и документации.
Короткая сводка действий:
- Проверить орфографию и регистр.
- Выполнить which/type/command -v.
- Установить пакет, если отсутствует.
- Добавить в PATH или запустить полный путь.
- Исправить права или использовать sudo.
Спасибо за чтение. Если хотите, я могу подготовить шаблон сценария проверки (bash) для автоматической диагностики «command not found» в вашей среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента