Зачем выбирать между Zsh и Bash
Терминал остаётся основным рабочим пространством для разработчиков и системных администраторов. Bash десятилетиями был отраслевым стандартом благодаря стабильности и повсеместной поддержке, но Zsh предлагает более интеллектуальные функции из коробки. К ним относятся контекстное автодополнение, обратный поиск с учётом частоты использования, глоб-паттерны и встроенная поддержка тем оформления.
Переход на Zsh не требует удаления Bash и полностью обратим. Вы получите ускоренную работу с командами, снижение количества опечаток и готовую экосистему плагинов, при этом сохранив совместимость со всеми вашими Bash-скриптами.
Требования и подготовка
Перед началом убедитесь, что у вас есть права sudo для установки системных пакетов. Рекомендуется создать резервную копию текущих конфигурационных файлов:
cp ~/.bashrc ~/.bashrc.bak
cp ~/.profile ~/.profile.bak
Это позволит быстро восстановить прежние алиасы и переменные окружения, если они потребуются в процессе миграции.
Шаг 1: Установка пакета
В современных дистрибутивах интерпретатор доступен в стандартных репозиториях. Откройте терминал и выполните команду, соответствующую вашей системе:
Для Debian и Ubuntu:
sudo apt update && sudo apt install zsh
Для Fedora и RHEL-подобных систем:
sudo dnf install zsh
Команда обновит кэш пакетов, проверит зависимости и скачает последнюю стабильную версию Zsh. Процесс занимает не более минуты при стабильном соединении.
Шаг 2: Активация оболочки по умолчанию
После установки система не переключится автоматически. Укажите Zsh как основную среду для текущего пользователя:
chsh -s $(which zsh)
Флаг -s задаёт абсолютный путь к исполняемому файлу, а конструкция $(which zsh) подставляет его автоматически. Для вступления изменений в силу полностью закройте все окна терминала и откройте новое.
Шаг 3: Перенос настроек и оптимизация
При первом запуске появится мастер настройки. Нажмите 0 для выхода без создания дефолтного конфига — мы настроим его вручную. Откройте ~/.zshrc в текстовом редакторе и перенесите рабочие алиасы:
cat ~/.bashrc.bak | grep "^alias" >> ~/.zshrc
Добавьте в конец файла параметры, улучшающие опыт работы:
# Игнорировать регистр при автодополнении
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
# Отключить автоскрытие курсора при вводе
unsetopt beep
# Включить подсветку синтаксиса (если установлен плагин)
autoload -U colors && colors
Примените изменения без перезапуска:
source ~/.zshrc
source загружает конфигурацию в текущий сеанс, позволяя сразу тестировать новые правила.
Проверка результата
Откройте новое окно терминала и выполните:
echo $SHELL
Вывод /usr/bin/zsh подтверждает успешную смену. Проверьте работу автодополнения: введите git s и нажмите Tab дважды. Оболочка предложит status, shortlog, show и другие варианты. Убедитесь, что перенесённые алиасы срабатывают корректно.
Возможные проблемы и решения
- Ошибки выполнения существующих скриптов. Zsh использует отличные от Bash правила раскрытия кавычек и массивов. Всегда указывайте интерпретатор явно в начале файла:
#!/usr/bin/env bash. Это гарантирует, что система вызовет Bash, а не Zsh. - Пропали переменные
PATH. Убедитесь, что в~/.zshrcприсутствует строка экспорта системных путей. Добавьтеexport PATH="/usr/local/bin:$PATH"в начало файла, чтобы приоритет отдавался пользовательским утилитам. - Медленная загрузка терминала. Причиной обычно становятся тяжёлые плагины или неоптимизированный
~/.zshrc. Запустите профилировщик:zsh -xvи найдите этапы, занимающие более 200 мс. Закомментируйте проблемные секции или используйтеzsh-autosuggestionsвместо тяжёлых фреймворков.