Linux

Zsh vs Bash: выбираем лучшую оболочку и настраиваем Linux

Разбираем ключевые отличия популярных командных оболочек Linux и показываем, как безопасно мигрировать с Bash на Zsh. Вы получите современный терминал с плагинами без потери функционала.

Обновлено 6 апреля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12Fedora 38+

Зачем выбирать между 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 вместо тяжёлых фреймворков.

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

Можно ли запускать Bash-скрипты внутри Zsh?
Что делать, если после смены терминал перестал открываться?
Нужен ли oh-my-zsh для работы Zsh?

Полезное

Установка пакета Zsh
Смена оболочки по умолчанию
Миграция конфигурации
Проверка работы и отладка