Что означает ошибка "command not found"
Ошибка command not found (на русском: "команда не найдена") возникает, когда операционная система macOS не может locate (найти) исполняемый файл команды, которую вы пытаетесь запустить в терминале. Она обычно выглядит так:
zsh: command not found: git
или
bash: git: command not found
Эта ошибка означает, что система проверила все директории, перечисленные в переменной окружения PATH, но не обнаружила в них исполняемого файла с указанным именем. Она может появиться при попытке запуска любой команды — от стандартных утилит (git, python, node) до ваших собственных скриптов.
Причины возникновения
- Команда не установлена. Самая частая причина — требуемое программное обеспечение (например, Git, Python, Node.js) просто не установлено в системе.
- Команда не находится в
PATH. Исполняемый файл существует, но директория, в которой он расположен, не включена в переменнуюPATH. Это часто случается с программами, установленными вручную (например, в/usr/local/binили~/bin). - Ошибка в написании команды. Простая опечатка или использование неверного регистра символов (хотя в macOS обычно нечувствительно к регистру, но некоторые утилиты могут быть).
- Проблемы с конфигурацией оболочки. Файлы конфигурации (
~/.zshrc,~/.bash_profile,~/.profile) повреждены или содержат ошибки, из-за чегоPATHне задаётся корректно. - Команда установлена, но путь не экспортирован. Некоторые установщики (например, через
pip install --user) помещают бинарники в~/.local/bin, но не добавляют этот путь вPATHавтоматически.
Способ 1: Проверьте правильность написания команды
Перед глубоким погружением убедитесь, что вы не сделали опечатку. macOS чувствителен к пробелам и специальным символам. Также проверьте, что команда действительно существует, с помощью утилит type или which:
type git
Если команда не найдена, вы увидите ту же ошибку. Если найдена — вы узнаете её полный путь и тип (алиас, функция, исполняемый файл).
Способ 2: Установите недостающую команду
Если команда не установлена, установите её. Рекомендуемый способ для macOS — менеджер пакетов Homebrew:
- Если Homebrew не установлен, установите его согласно официальной инструкции.
- Установите нужный пакет. Например, для Git:
brew install git - После установки команда должна сразу стать доступной. Если нет — перейдите к Способу 3.
Для некоторых утилит (например, python3) можно использовать официальные установщики с сайта разработчика или pip (для Python-пакетов).
Способ 3: Проверьте и настройте переменную PATH
Переменная PATH — это список директорий, где система ищет исполняемые файлы. Посмотрите её текущее значение:
echo $PATH
Вывод будет похож на:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Как добавить директорию в PATH
Если вы знаете, где находится исполняемый файл (например, which git показал /usr/local/bin/git), а этой директории нет в PATH, добавьте её:
- Определите, какую оболочку вы используете:
echo $SHELL/bin/zsh— zsh (по умолчанию с macOS Catalina)/bin/bash— bash
- Откройте соответствующий конфигурационный файл в текстовом редакторе (например,
nanoилиvim):- Для zsh:
nano ~/.zshrc - Для bash:
nano ~/.bash_profileили~/.profile
- Для zsh:
- В конце файла добавьте строку (замените
/ваш/путьна нужный):export PATH="/ваш/путь:$PATH"
Важно::$PATHв конце сохраняет существующие пути. - Сохраните файл (Ctrl+O, Enter) и закройте редактор (Ctrl+X).
- Примените изменения без перезагрузки терминала:
source ~/.zshrc # для zsh # или source ~/.bash_profile # для bash - Проверьте, что путь добавился:
echo $PATH
Способ 4: Перезагрузите оболочку или терминал
Иногда изменения в конфигурационных файлах не применяются автоматически к текущей сессии терминала. После редактирования ~/.zshrc или ~/.bash_profile выполните:
exec $SHELL
Эта команда перезапускает текущую оболочку, загружая обновлённые настройки. Альтернативно — просто закройте окно терминала и откройте новое.
Способ 5: Переустановите проблемную команду
Если команда установлена, но исполняемый файл повреждён или имеет неверные права доступа, переустановите её:
- Через Homebrew:
brew reinstall <пакет>
Например:brew reinstall git. - Через pip (для Python-пакетов):
pip install --user --upgrade --force-reinstall <пакет> - Системные утилиты (например,
ls,cp) обычно не требуют переустановки. Если они сломаны, возможно, потребуется восстановление системы или переустановка macOS.
Профилактика
Чтобы избежать ошибки command not found в будущем:
- Используйте Homebrew для установки CLI-утилит. Он автоматически управляет путями и зависимостями.
- Регулярно проверяйте
PATH. Убедитесь, что в нём есть стандартные системные пути (/usr/bin,/bin,/usr/sbin,/sbin) и пути к установленным вами программам (/usr/local/bin,~/.local/bin). - Не удаляйте файлы вручную из
/usr/local/binили других системных директорий. Это может сломать ссылки. - Для языковых пакетов (Python, Node.js) используйте виртуальные окружения (
venv,nvm), чтобы изолировать зависимости и управлять путями. - Перед выполнением команды проверьте её наличие через
whichилиtype, особенно если вы вводите её впервые.
Следуя этим рекомендациям, вы обеспечите стабильную работу терминала и избежите большинства проблем с поиском команд.