Что означает ошибка 'command not found' в zsh
Ошибка zsh: command not found возникает, когда оболочка zsh не может найти исполняемый файл команды, которую вы пытаетесь выполнить. Полный текст ошибки выглядит так:
zsh: command not found: имя_команды
Она появляется в терминале macOS при вводе команды, которая либо не установлена в системе, либо её путь не прописан в переменной окружения PATH. Это распространённая проблема при настройке нового Mac или после установки дополнительных инструментов.
Причины возникновения
- Команда не установлена — вы пытаетесь запустить утилиту, которую ещё не добавили в систему (например,
git,node,docker). - Путь к команде отсутствует в
PATH— команда установлена, но директория с её исполняемым файлом не добавлена в переменнуюPATH. - Опечатка в имени команды — случайная ошибка при вводе (например,
gtiвместоgit). - Конфликт оболочек — команда настроена только для bash (через
~/.bash_profile), но не для zsh. - Повреждение кэша zsh — иногда zsh не обновляет список доступных команд после установки нового ПО.
Способ 1: Проверьте, установлена ли команда
Первым делом убедитесь, что команда вообще присутствует в системе.
- Используйте
whichилиtypeдля поиска:which имя_команды
Если команда найдена, вы увидите полный путь к исполняемому файлу (например,/usr/local/bin/git). Если нет — команда не установлена. - Установите команду, если её нет:
- Через Homebrew (рекомендуется):
brew install имя_пакета - Через MacPorts:
sudo port install имя_пакета - Или скачайте установщик с официального сайта (например, для Git).
- Через Homebrew (рекомендуется):
Способ 2: Проверьте и исправьте переменную PATH
Если команда установлена, но which не находит её, проблема в переменной PATH.
- Просмотрите текущий
PATH:echo $PATH
Вывод будет списком директорий, разделённых двоеточиями (например,/usr/local/bin:/usr/bin:/bin). - Найдите, где установлена команда:
sudo find / -name "имя_команды" 2>/dev/null
Это покажет все файлы с таким именем. Обычно пользовательские утилиты хранятся в/usr/local/binили~/bin. - Добавьте недостающую директорию в
PATH:- Откройте файл конфигурации zsh (обычно
~/.zshrc):nano ~/.zshrc - Добавьте строку (замените
/путь/к/директориина найденный путь):export PATH=$PATH:/путь/к/директории - Сохраните файл (
Ctrl+O,Enter,Ctrl+X) и примените изменения:source ~/.zshrc
- Откройте файл конфигурации zsh (обычно
- Проверьте, что команда теперь работает:
which имя_команды
Способ 3: Проверьте опечатки и регистр
Иногда ошибка возникает из-за простой опечатки. Убедитесь, что команда написана правильно:
- Регистр имеет значение:
Git≠git. - Нет ли лишних символов или пробелов.
- Для проверки используйте
type:
Если команда не найдена, zsh покажет ошибку. Если найдена — выведет тип (alias, function, builtin и т.д.).type имя_команды
Способ 4: Переустановите команду через менеджер пакетов
Если команда была установлена через Homebrew или MacPorts, но перестала работать, попробуйте переустановить:
- Homebrew:
brew reinstall имя_пакета brew cleanup # удаляет старые версии - MacPorts:
sudo port upgrade имя_пакета
После переустановки проверьте PATH (Способ 2) — иногда менеджеры пакетов добавляют пути автоматически.
Способ 5: Обновите кэш оболочки
Zsh кэширует расположение команд. Если вы установили новую утилиту, но zsh её не видит, обновите кэш:
- Выполните
rehash:rehash
Это принудительно обновит список команд. - Или перезапустите терминал — иногда достаточно просто закрыть и снова открыть окно терминала.
- Если проблема осталась, проверьте, нет ли конфликта с файлами конфигурации:
- Убедитесь, что в
~/.zshrcнет ошибок (можно проверить черезzsh -n ~/.zshrc). - Временно переименуйте
~/.zshrc(например, в~/.zshrc.backup) и перезапустите zsh. Если ошибка исчезла — проблема в конфигурации.
- Убедитесь, что в
Способ 6: Используйте полный путь к команде (временное решение)
Если нужно срочно выполнить команду, а настройка PATH займёт время, укажите полный путь:
/полный/путь/к/имя_команды [аргументы]
Например:
/usr/local/bin/python3 --version
Чтобы узнать полный путь, используйте which (если команда установлена) или find (см. Способ 2).
Профилактика
Чтобы избежать ошибки command not found в будущем:
- Устанавливайте команды через Homebrew — он автоматически настраивает
PATHдля zsh. - Проверяйте
PATHпосле установки нового ПО — убедитесь, что директория с бинарниками добавлена. - Используйте
~/.zshrcдля настроек — не редактируйте~/.bash_profile(он не влияет на zsh). - Регулярно обновляйте Homebrew и пакеты:
brew update && brew upgrade - Не удаляйте системные директории из
PATH— оставьте стандартные значения (/usr/bin,/bin,/usr/sbin,/sbin).
Если проблема возникает с конкретной командой, проверьте её документацию — некоторые утилиты требуют дополнительных шагов настройки.