Гид по технологиям

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

5 min read Linux Обновлено 13 Apr 2026
Ошибка 'command not found' в Linux — как исправить
Ошибка '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)

  1. Скопируйте команду и вставьте в терминал — исключите опечатки.
  2. Запустите which <команда> или type <команда>.
  3. Если команда не найдена — проверьте установку пакета.
  4. Если файл есть локально — укажите полный путь или добавьте в PATH.
  5. Проверьте права (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.sh

7. Добавление программы в 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/ для централизованного управления.

визуализация переменных окружения Linux

интерфейс магазина приложений Ubuntu с примерами популярных приложений

Итог и следующий шаг

Ошибка «command not found» — обычная и решаемая. Начните с простого: проверьте опечатки и регистр, затем which/type, затем установку пакета и PATH, и только потом — права и зависимости. Для повторяемости зафиксируйте изменения в скриптах и документации.

Короткая сводка действий:

  • Проверить орфографию и регистр.
  • Выполнить which/type/command -v.
  • Установить пакет, если отсутствует.
  • Добавить в PATH или запустить полный путь.
  • Исправить права или использовать sudo.

Спасибо за чтение. Если хотите, я могу подготовить шаблон сценария проверки (bash) для автоматической диагностики «command not found» в вашей среде.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро