Коротко о главном
Zsh популярен у разработчиков, которые много работают в терминале и хотят удобное дополнение команд. Оболочка поддерживает рекурсивные шаблоны, расширенную историю и настраиваемые приглашения. В статье настроим zsh без сторонних фреймворков и разберём повседневные приёмы. Конфигурация будет работать в Debian, Ubuntu, Fedora и Arch.
Автодополнение zsh учитывает параметры команд, ветки Git и пути, что заметно сокращает ввод. Гибкий глоббинг позволяет выбирать файлы без сложных конструкций find. История и общие настройки делают работу в нескольких терминалах предсказуемой. При этом zsh остаётся полноценной оболочкой для скриптов и интерактивной работы.
В тестовой среде zsh запускается за пару минут. В рабочей — важны воспроизводимость, резервные копии, мониторинг и понятный план восстановления. Разберём, как подойти к этому системно.
Что меняется в рабочей среде
В тестовой среде достаточно, чтобы zsh запускался. В продакшене добавляются требования к доступности, безопасности и восстановлению. Чем раньше вы зафиксируете эти требования, тем меньше придётся переделывать.
Базовая установка
Установка
В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:
sudo apt install zsh
В Fedora и RHEL-совместимых системах пакет ставится через DNF:
sudo dnf install zsh
В Arch Linux и производных пакет доступен в официальных репозиториях:
sudo pacman -S zsh
Настройка и проверка
1. Проверьте установку
Убедитесь, что zsh установлен и доступен в PATH. Запуск отдельной копии не меняет оболочку входа и позволяет спокойно осмотреться. Версия важна для поддержки новых параметров completion.
zsh --version
zsh
2. Сделайте zsh оболочкой входа
Команда chsh меняет оболочку входа для текущего пользователя. Путь нужно передать полностью, поэтому используйте command -v. После смены завершите сеанс и войдите снова, чтобы изменения вступили в силу.
command -v zsh
chsh -s "$(command -v zsh)"
3. Создайте файл конфигурации
Основные интерактивные настройки хранятся в ~/.zshrc. Создайте резервную копию перед редактированием и добавьте блок из поля config. compinit включает систему автодополнения, а setopt задаёт удобное поведение оболочки.
touch ~/.zshrc
cp ~/.zshrc ~/.zshrc.bak
vim ~/.zshrc
4. Загрузите настройки и проверьте completion
После сохранения выполните source ~/.zshrc и убедитесь, что файл не содержит ошибок. Затем наберите git sta и нажмите Tab: zsh должен предложить завершение команды. Если дополнение не появилось, проверьте, что compinit вызван после autoload.
source ~/.zshrc
zsh -ic 'echo $ZSH_VERSION'
5. Попробуйте рекурсивные шаблоны и историю
Zsh понимает шаблон **/ без отдельной настройки globstar. Параметр null_glob предотвращает ошибку, когда совпадений нет. Команда fc показывает последние записи истории и удобна для быстрой проверки.
setopt null_glob
print -l **/*.md
fc -l -5
Конфигурация для повторяемого развёртывания
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
# ~/.zshrc
autoload -Uz compinit
compinit
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt autocd extendedglob hist_ignore_dups share_history
PROMPT='%n@%m:%~%# '
alias ll='ls -lah'
Безопасность и наблюдаемость
Ограничьте доступ к административным интерфейсам, включите логирование и проверяйте, что изменения конфигурации применяются автоматически. Ручные правки на сервере должны быть исключением, а не нормой.
Чек-лист
- Версии пакетов и конфигурация хранятся в репозитории или системе управления.
- Есть резервная копия данных и проверенный сценарий восстановления.
- Административный доступ ограничен по сети и снабжён отдельными учётными записями.
- Логи и метрики собираются, а оповещения настроены на реальные пороги.
- Изменения проходят проверку на тестовом стенде до выката.
- Есть план отката и ответственный за его выполнение.
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. Проверяйте конфигурацию командой zsh -f: оболочка запустится без ~/.zs
Проверяйте конфигурацию командой zsh -f: оболочка запустится без ~/.zshrc и поможет отделить проблему настройки от системной.
Совет 2. Если completion работает нестабильно, удалите кэш ~/.zcompdump* и снов
Если completion работает нестабильно, удалите кэш ~/.zcompdump* и снова выполните compinit.
Совет 3. Запускайте compaudit после установки плагинов: утилита покажет каталог
Запускайте compaudit после установки плагинов: утилита покажет каталоги с небезопасными правами.
Совет 4. Помните, что массивы zsh индексируются с единицы, а не с нуля, если пе
Помните, что массивы zsh индексируются с единицы, а не с нуля, если переносите скрипты из Bash.
Совет 5. Заключайте шаблоны в кавычки, когда их не нужно раскрывать, например п
Заключайте шаблоны в кавычки, когда их не нужно раскрывать, например при передаче аргумента другой команде.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
1. При запуске появляется сообщение command not found: compinit.
Добавьте перед вызовом строку autoload -Uz compinit. Без неё функция compinit ещё не загружена в память оболочки.
2. Completion выводит предупреждение о небезопасных каталогах.
Запустите compaudit, проверьте перечисленные пути и исправьте владельца или права. Не отключайте проверку вслепую.
3. chsh завершается ошибкой, потому что путь отсутствует в /etc/shells.
Добавьте путь к zsh в /etc/shells через sudoedit и повторите chsh. Затем перезайдите в систему.
4. Команда с шаблоном завершается ошибкой no matches found.
Проверьте шаблон или временно включите setopt null_glob. Также убедитесь, что шаблон не должен остаться буквальной строкой.
Итог
В рабочей среде zsh должен быть предсказуемым: версии зафиксированы, изменения проходят проверку, резервные копии существуют, а сбои видны в мониторинге. Чек-лист выше — минимальная отправная точка.