macOS syntax errorСредняя

Ошибка синтаксиса Zsh на macOS: как найти и исправить

Статья объясняет, что вызывает ошибку синтаксиса в Zsh на macOS, и предлагает несколько проверенных способов её устранения — от проверки конфигурационных файлов до сброса оболочки.

Обновлено 16 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:macOS 10.15+Zsh 5.0+

Что означает ошибка syntax error

Ошибка синтаксиса (syntax error) в Zsh — это сообщение от интерпретатора, который не может понять команду или строку в конфигурационном файле. Полный текст ошибки обычно выглядит так:

zsh: syntax error near unexpected token `...'

или

zsh: parse error near `...'

Zsh указывает на конкретный символ (токен), который вызвал проблему, и часто номер строки, если ошибка в файле. Такая ошибка возникает при запуске терминала, выполнении скрипта или вводе команды вручную.

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

  1. Опечатки в команде или конфигурационном файле — например, пропущенный символ или лишний пробел.
  2. Неправильное использование кавычек — несбалансированные кавычки (" или ') или их отсутствие там, где требуется.
  3. Специальные символы без экранирования — символы like $, *, ?, [, ], (, ) могут менять смысл команды, если их не экранировать обратным слешем (\) или не заключить в кавычки.
  4. Неполные конструкции — незакрытые скобки, кавычки или блоки кода (например, if ... then без fi).
  5. Конфликт синтаксиса с Bash — если вы переносите команды или настройки из Bash в Zsh, некоторые конструкции (например, [[ ... ]] или арифметические операции) могут отличаться.
  6. Повреждённый конфигурационный файл — например, .zshrc был изменён некорректно или содержит остатки от других программ.

Способ 1: Проверьте команду или скрипт

Если ошибка появляется при выполнении конкретной команды или скрипта, внимательно проверьте её синтаксис.

  1. Скопируйте команду, которая вызывает ошибку.
  2. Проверьте, все ли кавычки сбалансированы. Например:
    # Неправильно:
    echo "Привет
    # Правильно:
    echo "Привет"
    
  3. Убедитесь, что специальные символы экранированы, если они должны восприниматься буквально:
    # Неправильно (звёздочка раскроется в имена файлов):
    echo *.txt
    # Правильно:
    echo \*.txt
    
  4. Если команда длинная, разбейте её на части или используйте обратную косую черту (\) для переноса строки.

После исправления выполните команду снова.

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

Если ошибка возникает при запуске нового окна терминала, проблема, скорее всего, в одном из конфигурационных файлов Zsh (например, ~/.zshrc).

  1. Посмотрите на полное сообщение об ошибке. Обычно оно указывает файл и номер строки:
    /Users/username/.zshrc:15: syntax error near unexpected token `;'
    
  2. Откройте указанный файл в редакторе. Для быстрого редактирования используйте nano:
    nano ~/.zshrc
    
    Если ошибка в другом файле, укажите его путь.
  3. Перейдите к строке с ошибкой (в nano нажмите Ctrl + _, затем введите номер строки).
  4. Проверьте синтаксис в этой строке и окружающих. Частые проблемы:
    • Отсутствие then после if или elif.
    • Незакрытые кавычки или скобки.
    • Лишние точки с запятой (;).
    • Использование команд Bash вместо Zsh (например, echo $BASH_VERSION может быть пустым в Zsh).
  5. Исправьте ошибку, сохраните файл (Ctrl + O в nano, затем Enter) и закройте редактор (Ctrl + X).
  6. Примените изменения без перезапуска терминала:
    source ~/.zshrc
    
    Если ошибка остаётся, повторите поиск в других строках.

Способ 3: Временно отключить конфигурационные файлы

Если не можете определить, в каком файле ошибка, запустите Zsh без загрузки конфигурации. Это поможет понять, связана ли проблема с настройками оболочки.

  1. Запустите чистый сеанс Zsh:
    zsh -f
    
    Флаг -f отключает чтение конфигурационных файлов.
  2. Если в этом режиме ошибка не появляется, значит, проблема в одном из файлов ~/.zshrc, ~/.zprofile, ~/.zlogin или ~/.zshenv.
  3. Чтобы найти проблемный файл, последовательно переименовывайте их (например, добавьте .backup к имени) и запускайте новый терминал или source оставшегося файла. Как только ошибка исчезнет, вы нашли виновника.
  4. После локализации файла проверьте его синтаксис, как описано в Способе 2.

Способ 4: Сбросить конфигурацию Zsh

Если не удаётся найти ошибку вручную, проще всего временно сбросить конфигурацию к стандартной.

  1. Переименуйте основной конфигурационный файл:
    mv ~/.zshrc ~/.zshrc.backup
    
  2. Создайте новый минимальный ~/.zshrc:
    echo '# Минимальная конфигурация Zsh' > ~/.zshrc
    
  3. Перезапустите терминал или выполните source ~/.zshrc. Ошибка должна исчезнуть.
  4. Теперь вы можете постепенно переносить настройки из старого файла (~/.zshrc.backup) в новый, добавляя их по одной и проверяя после каждого добавления, не появилась ли ошибка. Так вы найдётся проблемную строку.

Способ 5: Проверьте скрипты, запускаемые из .zshrc

Иногда в ~/.zshrc вызываются внешние скрипты (например, через source или прямое выполнение). Ошибка может быть в них, а не в самом ~/.zshrc.

  1. Откройте ~/.zshrc и найдите строки, которые запускают другие файлы:
    source /path/to/script.sh
    
    или
    /path/to/script.sh
    
  2. Проверьте указанные скрипты на синтаксические ошибки. Для этого можно запустить Zsh в режиме проверки синтаксиса:
    zsh -n /path/to/script.sh
    
    Флаг -n не выполняет скрипт, а только проверяет синтаксис.
  3. Исправьте ошибки в скриптах или временно закомментируйте их вызов в ~/.zshrc, чтобы убедиться, что проблема именно там.

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

  • Всегда проверяйте синтаксис после редактирования конфигурационных файлов. Используйте source ~/.zshrc или zsh -n ~/.zshrc, чтобы обнаружить ошибки до перезапуска терминала.
  • Используйте редактор с подсветкой синтаксиса (например, VS Code, Sublime Text или vim с настройками), чтобы видеть незакрытые кавычки или скобки.
  • Экранируйте специальные символы, если они должны восприниматься буквально. В Zsh, как и в Bash, для этого используется обратный слеш (\) или одинарные кавычки ('...').
  • Не копируйте команды Bash в Zsh без проверки. Хотя Zsh в режиме совместимости (emulate sh) может работать с Bash-синтаксисом, лучше адаптировать команды под Zsh или явно указывать оболочку (например, #!/usr/bin/env bash в скриптах).
  • Резервное копирование конфигурационных файлов перед крупными изменениями. Это позволит быстро откатиться в случае ошибки:
    cp ~/.zshrc ~/.zshrc.bak
    

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

Что такое ошибка синтаксиса в Zsh и почему она возникает?
Как быстро найти строку с ошибкой в конфигурационном файле Zsh?
Можно ли отключить Zsh и вернуться к Bash, чтобы избежать ошибок?
Почему ошибка появляется только при запуске нового окна терминала?

Полезное

Определите источник ошибки
Откройте проблемный файл
Исправьте синтаксис
Проверьте исправление
Если ошибка не в .zshrc

Эта статья помогла вам решить проблему?