Что означает ошибка 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 обычно вызвана одной из следующих причин:
- Искажённая переменная
PATH. Самый частый случай. Системные пути (например,/usr/bin, где находятся стандартные утилиты) отсутствуют или идут после путей пользователя, что мешает Zsh найти встроенные команды. - Конфликт алиасов (alias). В файле
~/.zshrcили~/.zprofileможет быть определён алиас с именем стандартной команды (например,alias ls='ls -la'), но с синтаксической ошибкой или конфликтующим определением. - Повреждённый или пустой файл конфигурации Zsh. Если файл
~/.zshrcсодержит синтаксические ошибки (незакрытые кавычки, неправильный синтаксис функций), Zsh может прервать загрузку и не настроить переменные окружения корректно. - Удаление или перемещение исполняемого файла. Команда была установлена (например, через Homebrew), но затем файл был удалён или перемещён вручную.
- Проблема с обновлением macOS. После крупного обновления системы стандартные пути могут быть сброшены, а старые конфигурационные файлы становятся несовместимыми с новой версией Zsh.
Способы решения
Способ 1: Проверка и восстановление переменной PATH
Первым делом нужно убедиться, что в переменной PATH присутствуют стандартные системные директории.
- Откройте Терминал.
- Выведите текущее значение
PATH:echo $PATH - Обычный вывод для macOS должен содержать как минимум следующие пути (порядок может отличаться):
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin - Если пути отсутствуют или выглядят подозрительно (например, начинаются с
~/или содержат только кастомные пути), временно добавьте недостающие:export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH" - После этого попробуйте выполнить проблемную команду снова. Если она заработала, нужно внести исправление в конфигурационный файл Zsh (
~/.zshrcили~/.zprofile), добавив туда строкуexport PATH=...из шага 4.
⚠️ Важно: Изменение
PATHчерезexportдействует только в текущем сеансе терминала. Для постоянного исправления отредактируйте конфигурационный файл.
Способ 2: Диагностика и очистка алиасов
Если PATH в порядке, проблема может быть в конфликтующем алиасе.
- Покажите список всех активных алиасов:
alias - Найдите в выводе алиас, имя которого совпадает с проблемной командой (например,
gitилиls). - Временно удалите проблемный алиас (например, для
git):unalias git - Попробуйте снова выполнить оригинальную команду. Если она сработала, значит, ошибка была в определении алиаса.
- Для постоянного исправления найдите и исправьте или удалите строку с
aliasв файле~/.zshrc.
Способ 3: Проверка конфигурационных файлов на синтаксис
Повреждённый ~/.zshrc может полностью нарушить загрузку оболочки.
- Временно переименуйте основной конфигурационный файл, чтобы Zsh загрузилась с настройками по умолчанию:
mv ~/.zshrc ~/.zshrc.broken - Запустите новую сессию Zsh (откройте новое окно терминала или выполните
zsh). - Попробуйте выполнить проблемную команду. Если она работает, значит, ошибка была в старом
~/.zshrc. - Восстановите старый файл и проверьте его на синтаксические ошибки. Лучший способ — создать новый чистый файл и переносить в него настройки по одной, проверяя работоспособность после каждого изменения.
Способ 4: Полная переустановка Zsh
Если ни один из предыдущих способов не помог, возможно, сам бинарник Zsh или его системные файлы повреждены.
- Если Zsh был установлен через Homebrew:
Эта команда переустановит Zsh и обновит пути.brew reinstall zsh - Если используется системная Zsh: Восстановите стандартные конфигурационные файлы. Переместите все скрытые файлы Zsh в папку для бэкапа:
После этого откройте новое окно терминала. Zsh создаст минимальные конфигурационные файлы по умолчанию. Проверьте, работает ли стандартная команда (например,mkdir -p ~/zsh_backup mv ~/.zshrc ~/.zprofile ~/.zshrc.zwc ~/zsh_backup/ 2>/dev/nullls). Если да — настройте 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). Избегайте ручного копирования бинарных файлов в системные директории.