macOSСредняя

Ошибка 'zsh: invalid command' в macOS: причины и быстрое исправление

Статья объясняет, почему в терминале macOS появляется сообщение 'zsh: invalid command', и предоставляет 4 рабочих способа решения проблемы — от простой проверки переменной PATH до полной переустановки Zsh.

Обновлено 17 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:macOS Sonoma 14.xmacOS Ventura 13.xZsh 5.8+

Что означает ошибка zsh: invalid command

Ошибка zsh: invalid command (или zsh: command not found) появляется в терминале macOS при попытке выполнить команду, которую оболочка Zsh не может распознать или найти. Полный текст может выглядеть так:

zsh: invalid command: 'git'

или

zsh: command not found: npm

Эта ошибка означает, что Zsh не может найти исполняемый файл указанной команды в директориях, перечисленных в переменной окружения PATH, либо команда была переопределена некорректным алиасом или функцией. Проблема возникает сразу после ввода команды и блокирует выполнение любой задачи, требующей использования терминала — от установки ПО через Homebrew до работы с Git.

Причины возникновения

Ошибка zsh: invalid command обычно вызвана одной из следующих причин:

  1. Искажённая переменная PATH. Самый частый случай. Системные пути (например, /usr/bin, где находятся стандартные утилиты) отсутствуют или идут после путей пользователя, что мешает Zsh найти встроенные команды.
  2. Конфликт алиасов (alias). В файле ~/.zshrc или ~/.zprofile может быть определён алиас с именем стандартной команды (например, alias ls='ls -la'), но с синтаксической ошибкой или конфликтующим определением.
  3. Повреждённый или пустой файл конфигурации Zsh. Если файл ~/.zshrc содержит синтаксические ошибки (незакрытые кавычки, неправильный синтаксис функций), Zsh может прервать загрузку и не настроить переменные окружения корректно.
  4. Удаление или перемещение исполняемого файла. Команда была установлена (например, через Homebrew), но затем файл был удалён или перемещён вручную.
  5. Проблема с обновлением macOS. После крупного обновления системы стандартные пути могут быть сброшены, а старые конфигурационные файлы становятся несовместимыми с новой версией Zsh.

Способы решения

Способ 1: Проверка и восстановление переменной PATH

Первым делом нужно убедиться, что в переменной PATH присутствуют стандартные системные директории.

  1. Откройте Терминал.
  2. Выведите текущее значение PATH:
    echo $PATH
    
  3. Обычный вывод для macOS должен содержать как минимум следующие пути (порядок может отличаться):
    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    
  4. Если пути отсутствуют или выглядят подозрительно (например, начинаются с ~/ или содержат только кастомные пути), временно добавьте недостающие:
    export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
    
  5. После этого попробуйте выполнить проблемную команду снова. Если она заработала, нужно внести исправление в конфигурационный файл Zsh (~/.zshrc или ~/.zprofile), добавив туда строку export PATH=... из шага 4.

⚠️ Важно: Изменение PATH через export действует только в текущем сеансе терминала. Для постоянного исправления отредактируйте конфигурационный файл.

Способ 2: Диагностика и очистка алиасов

Если PATH в порядке, проблема может быть в конфликтующем алиасе.

  1. Покажите список всех активных алиасов:
    alias
    
  2. Найдите в выводе алиас, имя которого совпадает с проблемной командой (например, git или ls).
  3. Временно удалите проблемный алиас (например, для git):
    unalias git
    
  4. Попробуйте снова выполнить оригинальную команду. Если она сработала, значит, ошибка была в определении алиаса.
  5. Для постоянного исправления найдите и исправьте или удалите строку с alias в файле ~/.zshrc.

Способ 3: Проверка конфигурационных файлов на синтаксис

Повреждённый ~/.zshrc может полностью нарушить загрузку оболочки.

  1. Временно переименуйте основной конфигурационный файл, чтобы Zsh загрузилась с настройками по умолчанию:
    mv ~/.zshrc ~/.zshrc.broken
    
  2. Запустите новую сессию Zsh (откройте новое окно терминала или выполните zsh).
  3. Попробуйте выполнить проблемную команду. Если она работает, значит, ошибка была в старом ~/.zshrc.
  4. Восстановите старый файл и проверьте его на синтаксические ошибки. Лучший способ — создать новый чистый файл и переносить в него настройки по одной, проверяя работоспособность после каждого изменения.

Способ 4: Полная переустановка Zsh

Если ни один из предыдущих способов не помог, возможно, сам бинарник Zsh или его системные файлы повреждены.

  1. Если Zsh был установлен через Homebrew:
    brew reinstall zsh
    
    Эта команда переустановит Zsh и обновит пути.
  2. Если используется системная Zsh: Восстановите стандартные конфигурационные файлы. Переместите все скрытые файлы Zsh в папку для бэкапа:
    mkdir -p ~/zsh_backup
    mv ~/.zshrc ~/.zprofile ~/.zshrc.zwc ~/zsh_backup/ 2>/dev/null
    
    После этого откройте новое окно терминала. Zsh создаст минимальные конфигурационные файлы по умолчанию. Проверьте, работает ли стандартная команда (например, ls). Если да — настройте Zsh заново, скопировав нужные настройки из бэкапа.

Профилактика

Чтобы избежать появления ошибки zsh: invalid command в будущем:

  • Будьте осторожны при редактировании ~/.zshrc. Всегда делайте бэкап файла перед изменениями (cp ~/.zshrc ~/.zshrc.backup). Проверяйте синтаксис после правки.
  • Не переопределяйте системные команды (например, ls, cat, rm) через алиасы без необходимости. Если нужно — используйте уникальные имена.
  • При использовании менеджеров пакетов (Homebrew, MacPorts) убедитесь, что их пути (/opt/homebrew/bin или /usr/local/bin) добавлены в PATH после системных, но до пользовательских, чтобы избежать конфликтов.
  • После обновления macOS проверьте работоспособность терминала и наличие критических путей в PATH. Обновляйте конфигурационные файлы Zsh в соответствии с новой версией.
  • Устанавливайте команды только из доверенных источников (официальные сайты, Homebrew). Избегайте ручного копирования бинарных файлов в системные директории.

Часто задаваемые вопросы

В чём разница между ошибками 'zsh: invalid command' и 'zsh: command not found'?
Могу ли я использовать Bash вместо Zsh, чтобы избежать этой ошибки?
Почему после обновления macOS начали появляться такие ошибки?

Полезное

Проверьте переменную PATH
Временно перезагрузите конфигурацию Zsh
Проверьте алиасы и функции
Полная переустановка Zsh