macOS

Кастомизируйте ZSH-приглашение в macOS: полное руководство

Это руководство поможет вам полностью изменить вид и функциональность приглашения командной строки (prompt) в ZSH на macOS. Вы научитесь редактировать конфигурационный файл, использовать готовые темы и создавать собственный промпт с отображением пути, времени и статуса Git.

Средняя

Введение / Зачем это нужно

Приглашение командной строки (prompt) — это первое, что вы видите в терминале. Стандартный промпт в ZSH на macOS (%) функционален, но неинформативен и визуально скуден. Кастомизация позволяет:

  • Увеличить продуктивность: Сразу видеть текущий путь, статус Git (ветка, изменения), время.
  • Улучшить читаемость: Использовать цвета для разделения элементов.
  • Персонализировать среду: Сделать терминал своим, что особенно важно для ежедневной работы.

После выполнения этого гайда вы получите информативный и стильный промпт, адаптированный под ваши задачи.

Требования / Подготовка

  1. Операционная система: macOS (любая современная версия, поддерживающая ZSH).
  2. Оболочка: ZSH должен быть установлен и активен. macOS с Catalina (10.15) и новее использует ZSH по умолчанию.
  3. Права доступа: Права на запись в домашний каталог пользователя (~).
  4. (Опционально) Oh My Zsh: Если хотите использовать готовые темы, установите Oh My Zsh. Инструкция по установке есть в нашем гайде /guides/macos/install-oh-my-zsh.

Пошаговая инструкция

Шаг 1: Проверьте, используется ли ZSH по умолчанию

Откройте приложение Терминал (Terminal). Введите команду:

echo $SHELL

Если вывод — /bin/zsh или /usr/local/bin/zsh, вы используете ZSH. Если вы видите /bin/bash или другой путь, измените оболочку:

chsh -s /bin/zsh

Вам потребуется ввести пароль. После этого закройте и снова откройте окно Терминала.

Шаг 2: Откройте и создайте резервную копию файла .zshrc

Основной конфигурационный файл ZSH — ~/.zshrc. Он может отсутствовать в новой установке.

  1. Проверьте его наличие:
    ls -la ~/.zshrc
    
  2. Если файл есть, создайте его резервную копию (это просто и безопасно):
    cp ~/.zshrc ~/.zshrc.backup.$(date +%Y%m%d)
    
    Эта команда создаст копию с датой в имени, например .zshrc.backup.20260216.
  3. Если файла нет, создайте пустой:
    touch ~/.zshrc
    
  4. Откройте файл в текстовом редакторе. Для простоты используйте nano:
    nano ~/.zshrc
    

Шаг 3: Выберите и установите тему для промпта (если используете Oh My Zsh)

Если у вас установлен Oh My Zsh, это самый быстрый способ получить красивый промпт.

  1. В открытом файле ~/.zshrc найдите строку, начинающуюся с ZSH_THEME. Она обычно выглядит так:
    ZSH_THEME="robbyrussell"
    
  2. Измените значение на название нужной темы. Популярные варианты:
    • agnoster — компактный, с информацией о Git и статусе последней команды.
    • avit — показывает время, путь, ветку Git.
    • bira — цветной, с большим количеством информации.
    • lambda — минималистичный, с символом λ.
  3. Полный список встроенных тем находится в каталоге: /usr/share/oh-my-zsh/themes/. Посмотреть их можно командой:
    ls /usr/share/oh-my-zsh/themes/ | sed 's/.zsh-theme//'
    
  4. Сохраните файл в nano (Ctrl+X, затем Y, затем Enter) и примените изменения:
    source ~/.zshrc
    
    Ваш промпт должен измениться мгновенно.

Шаг 4: Настройте собственный промпт вручную (без Oh My Zsh или для тонкой настройки)

Если вы не используете Oh My Zsh или хотите полный контроль, настройте переменные PROMPT (основной промпт) и RPROMPT (правый промпт).

  1. В файле ~/.zshrc добавьте или измените строку с PROMPT. Вот несколько примеров:
    Простой промпт с путём и символом:
    PROMPT='%F{blue}%~%f %# '
    
    • %F{blue} — начинать синим цветом.
    • %~ — текущий рабочий каталог, сокращённый до ~ для домашней папки.
    • %f — сброс цвета.
    • %# — символ # для root, % для обычного пользователя.

    Промпт с пользователем, хостом и временем:
    PROMPT='%F{green}%n%f@%F{magenta}%m%f %F{cyan}%~%f %F{yellow}%*%f %# '
    
    • %n — имя пользователя.
    • %m — имя хоста (машины).
    • %* — текущее время в формате HH:MM:SS.
  2. Для правого промпта (RPROMPT) используйте аналогичные escape-последовательности. Он выравнивается по правому краю:
    RPROMPT='%F{red}%?%f' # Показывает код возврата последней команды (0 - зелёный, !=0 - красный)
    
  3. Сохраните файл и выполните source ~/.zshrc.

Шаг 5: Добавьте информативные элементы (Git, статус команд)

Мощный промпт часто показывает статус Git. В 'чистом' ZSH для этого потребуется своя функция.

  1. Добавьте в ~/.zshrc функцию для отображения информации о Git:
    # Функция для отображения информации о Git в промпте
    git_prompt_info() {
      local ref
      ref=$(git symbolic-ref HEAD 2> /dev/null) || return
      echo " (%F{magenta}${ref#refs/heads/}%f)"
    }
    

    Эта функция показывает текущую ветку в magenta цвете в круглых скобках.
  2. Интегрируйте её в PROMPT:
    PROMPT='%F{green}%n@%m%f %F{cyan}%~%f$(git_prompt_info) %# '
    

    Теперь, находясь в каталоге Git-репозитория, вы увидите ветку.
  3. Для более сложного статуса (изменённые файлы, ahead/behind) лучше использовать готовую реализацию из Oh My Zsh или сторонние скрипты. Если Oh My Zsh установлен, вы можете просто добавить в ~/.zshrc:
    autoload -Uz vcs_info
    precmd_vcs_info() { vcs_info }
    precmd_functions+=( precmd_vcs_info )
    setopt prompt_subst
    RPROMPT=\$vcs_info_msg_0_
    

    И настроить zstyle для vcs_info. Это более продвинутый способ.

Шаг 6: Примените изменения и протестируйте

  1. После каждого изменения в ~/.zshrc применяйте его:
    source ~/.zshrc
    
  2. Протестируйте промпт:
    • Перейдите в разные каталоги (cd /, cd ~/Documents), убедитесь, что путь (%~) отображается корректно.
    • Если добавили Git, перейдите в любой Git-репозиторий и сделайте несколько коммитов/изменений, проверьте отображение ветки и статуса.
    • Проверьте цвета. Если цвета не отображаются, убедитесь, что ваш терминал поддерживает 256-цветную палитру (по умолчанию в Терминале macOS это так).
  3. Если что-то пошло не так, восстановите резервную копию:
    cp ~/.zshrc.backup.20260216 ~/.zshrc
    source ~/.zshrc
    
    (замените дату на вашу).

Проверка результата

Успешная настройка промпта означает:

  1. При запуске нового окна Терминала или новой вкладки отображается ваш кастомный промпт.
  2. Путь в промпте корректно обновляется при смене каталога.
  3. (Если настраивали) Информация о Git появляется только внутри репозиториев и отражает текущую ветку.
  4. Цвета отображаются правильно, текст читаем.
  5. Промпт не содержит синтаксических ошибок ZSH (не выводит сообщения вроде zsh: event not found при вводе команд).

Возможные проблемы

Проблема: Цвета в промпте отображаются как странные символы или не работают.

Решение: Убедитесь, что вы используете правильные escape-коды (%F{color}, %f). Вместо %F{blue} можно использовать числовой код: %F{4}. Также проверьте настройки вашего терминала: в Терминале macOS в Preferences -> Profiles -> Text должен быть включён "Use built-in ANSI color set" или "Use bright colors for bold text".

Проблема: Функция git_prompt_info не работает, выводится пустота даже в Git-репозитории.

Решение: Убедитесь, что вы находитесь в корне репозитория (где есть папка .git). Функция ищет этот каталог. Также проверьте, нет ли опечаток в имени функции. Для отладки добавьте set -x перед вызовом функции и set +x после в ~/.zshrc, чтобы увидеть, что происходит.

Проблема: Промпт "ломается" (переносит символы prompts на новую строку) при длинном пути.

Решение: ZSH автоматически переносит длинные промпты, но это может выглядеть некрасиво. Используйте параметр PROMPT_EOL_MARK или оберните длинные части в %{%} для корректного подсчёта длины. Например: PROMPT='%{%F{blue}%}%~%{%f%} %# '. Более надёжное решение — использовать плагин zsh-autosuggestions или powerlevel10k, которые грамотно управляют пространством.

Проблема: После настройки промпта перестали работать другие настройки из .zshrc (alias, path).

Решение: Скорее всего, вы случайно удалили или закомментировали другие строки в файле. Восстановите файл из резервной копии и вносите изменения более аккуратно, добавляя новые строки в конец файла или перед нужными секциями, не удаляя старое.

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

Можно ли кастомизировать промпт, если я не использую Oh My Zsh?
Почему мои изменения в .zshrc не применяются после перезагрузки терминала?
Как вернуть стандартный промпт ZSH?
Промпт с темами Oh My Zsh замедляет работу терминала?

Полезное

Проверьте, используется ли ZSH по умолчанию
Откройте и создайте резервную копию файла .zshrc
Выберите и установите тему для промпта (опционально, для Oh My Zsh)
Настройте собственный промпт вручную (без Oh My Zsh)
Добавьте информативные элементы (время, Git, пользователь)
Примените изменения и протестируйте