#Что означает проблема и кому подходит инструкция
Пакет Ubuntu может быть установлен, но команда не распознаётся из-за другого имени исполняемого файла, каталога PATH, виртуального окружения либо установки только библиотеки. Здесь не следует добавлять весь /usr/bin в права администратора или использовать случайные скрипты из сети.
#Возможные причины и отличительные признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Имя пакета не совпадает с именем программыПакет предоставляет файлы данных, библиотеку или исполняемый файл с другим названием. | dpkg -L не показывает ожидаемый исполняемый файл. | Проверить список файлов и руководство пакета. |
| Каталог не включён в PATHКоманда по полному пути существует и запускается, а по имени — нет. | command -v пуст, но find показывает bin. | Добавить только доверенный каталог в нужное окружение. |
| Выполняется другая оболочка или изолированное окружениеPATH в SSH, cron, sudo, контейнере и графическом терминале не обязан совпадать. | Из терминала команда работает, из службы — нет. | Проверить переменные именно того процесса. |
#Диагностика и пошаговое устранение
- 1. Запишите точное сообщение и имя командыВ Терминале Ubuntu (Ctrl+Alt+T) повторите команду без
sudoи запишитеcommand not foundлибо иной текст. Проверьте текущую оболочку и список каталогов PATH. Если команда требует иных прав, сейчас не запускайте её через sudo:sudoиспользует собственное окружение и может скрыть причину. - Замените ИМЯ_КОМАНДЫ на реальное слово без пробелов; отсутствие пути — важный результатLinux · Терминал (Bash)КомандаЗамените ИМЯ_КОМАНДЫ на реальное слово без пробелов; отсутствие пути — важный результат.
printf "Оболочка: %s\nPATH: %s\n" "$SHELL" "$PATH"command -v ИМЯ_КОМАНДЫ
- 2. Убедитесь, что пакет установлен полностьюУкажите реальное имя пакета вместо
ИМЯ_ПАКЕТА:dpkg-queryвыводит статус;dpkg -L— файлы. Статусiiв dpkg -l обычно означает установленный пакет. Обращайте внимание на bin, sbin и каталоги в /opt. Если обнаружилась только библиотека или man-страница, искать PATH бессмысленно — понадобится отдельный пакет с исполняемым инструментом.Linux · Терминал (Bash)КомандаПодставьте настоящее имя пакета; при отсутствии пакета dpkg покажет ошибку.dpkg -s ИМЯ_ПАКЕТАdpkg -L ИМЯ_ПАКЕТА
- 3. Проверьте путь и права самого файлаПо выводу dpkg -L найдите исполняемый файл. Командой
ls -l /полный/путьпроверьте атрибут x;fileподскажет, это скрипт или бинарная программа. Еслиcommand -vпоказывает другую версию, выполнитеtype -a. Не делайтеchmod 777— это небезопасно и может скрыть повреждение установки.Linux · Терминал (Bash)КомандаЗамените заполнители на путь из dpkg -L. file может потребовать установки отдельного пакета.type -a ИМЯ_КОМАНДЫls -l /полный/путь/к/программеfile /полный/путь/к/программе
- 4. Проверьте запуск по точному путиЕсли файл доверенный и установлен штатным пакетом, выполните его с безопасным параметром
--versionили--helpлишь если этот параметр описан в руководстве. Если по полному пути программа работает, проблема в PATH. Если пишетNo such file or directoryпри существующем файле — возможен недостающий интерпретатор или динамический загрузчик, а не переменная PATH. - Дополнительная команда по темеLinux · Терминал (Bash)КомандаНе запускайте неизвестную программу с изменяющими данные аргументами; некоторые инструменты не поддерживают --help.
/полный/путь/к/программе --help
- 5. Исправьте PATH только в нужной оболочкеДля установленной программы в личном каталоге можно добавить её доверенную папку в PATH в конфигурации входной оболочки. Прежде чем редактировать, сохраните копию
~/.profileи определите, читает ли её ваша оболочка; для интерактивного Bash это может быть~/.bashrc. Не добавляйте текущий каталог.или каталоги с записью для всех пользователей. Для systemd используйте абсолютныйExecStart=, а не личный ~/.bashrc. - Только чтение: не изменяйте переменные на уровне всей системы ради одной программыLinux · Терминал (Bash)КомандаТолько чтение: не изменяйте переменные на уровне всей системы ради одной программы.
printf "%s\n" "$SHELL" "$PATH"ls -la ~/.profile ~/.bashrc 2>/dev/null
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаЕсли программа не обнаружена, сохраните вывод PATH и список файлов пакета для обращения к разработчику.
command -v ИМЯ_КОМАНДЫtype -a ИМЯ_КОМАНДЫ - 6. Проверьте результат из нового окнаОткройте новое окно Терминала и повторите
command -v, затем штатную безвредную команду программы. Убедитесь, что отображается нужный путь, а не одноимённая программа из другой папки. Если требуется запуск из cron или службы, проверяйте PATH именно там и задайте абсолютный путь.
#Как убедиться, что неисправность устранена
Исправление подтверждается, когда команда разрешается в правильный путь в нужном контексте (терминал, служба, задание) и безопасный тест завершается успешно. Не меняйте права системных каталогов ради PATH.
#Если результат не получен
Не повторяйте опасные действия наугад. Сохраните точную формулировку ошибки, вывод диагностики без секретов, версию Ubuntu и данные о затронутом компоненте. Верните лишь собственные изменения из резервной копии; если затронута загрузка, диски или рабочий сервер, воспользуйтесь консолью восстановления либо помощью администратора.