Как изменить shell по умолчанию в Linux

О чём эта статья
В этой статье вы найдёте краткое объяснение, что такое shell, зачем менять оболочку по умолчанию, подробную пошаговую инструкцию по установке и настройке (на примере zsh), рекомендации по тестированию, откату и совместимости, а также чек-листы для разных ролей — разработчика, администратора и обычного пользователя.
Важно: статья ориентирована на современные дистрибутивы Linux (Debian/Ubuntu, Fedora, Arch и производные). Команды работают в терминале; для выполнения команд требуются права sudo там, где это указано.
Что такое shell и зачем он нужен
Shell — это программа, которая служит интерфейсом между вами и ядром/утилитами операционной системы. Это «оболочка», принимающая команды, исполняющая программы и возвращающая результат. Кратко:
- Shell (оболочка) предоставляет командную строку (CLI) и синтаксис команд.
- Она интерпретирует ввод, ищет исполняемые файлы в PATH и запускает их.
- Shell также управляет скриптами, переменными окружения и сессиями.
Определение в одну строку: shell — программа для взаимодействия с ОС через команды.
Популярные оболочки и их особенности
- bash — стандартная оболочка для большинства дистрибутивов; стабильна, совместима со скриптами POSIX.
- zsh — расширенные возможности автодополнения, автокоррекции, плагины, удобные темы; часто используется с oh-my-zsh.
- fish — современная, удобный синтаксис автодополнения и конфигурации, но несовместима с POSIX-скриптами по умолчанию.
- ksh — историческая оболочка с некоторыми расширениями для корпоративных систем.
- csh/tcsh — старые оболочки, иногда используются в специализированных окружениях.
Короткая эвристика: если нужна максимальная совместимость со скриптами — оставайтесь на bash; если нужна удобная интерактивная работа и богатая экосистема плагинов — попробуйте zsh или fish.
Почему менять shell по умолчанию
- Лучший интерактивный опыт: автодополнение, подсказки, история команд с удобным поиском.
- Плагины и темы ускоряют работу и визуально улучшают терминал.
- Персонализация окружения: алиасы, функции, автозапуск задач при старте сессии.
Противопоказания — когда система или критические скрипты завязаны на конкретный shell (см. раздел Совместимость и предупреждения).
Шаги: как изменить shell по умолчанию (подробно)
Ниже — надёжный рабочий процесс. Мы используем утилиту chsh (change shell). Она присутствует практически во всех Unix-подобных системах.
Шаг 1 — посмотреть установленные оболочки
Откройте терминал и выполните:
cat /etc/shellsЭтот файл содержит допустимые пути к оболочкам. Если вы видите /usr/bin/zsh или /bin/zsh — оболочка установлена и её можно назначить по умолчанию.

Примечание: если нужного пути в /etc/shells нет, добавлять его вручную можно только после установки бинарника оболочки и с учётом безопасности.
Шаг 2 — установить новую оболочку
Пример для zsh. Замените имя пакета, если выбираете другую оболочку.
Debian/Ubuntu:
sudo apt update
sudo apt install zshArch/Manjaro:
sudo pacman -Syu zshFedora/CentOS/RHEL:
sudo dnf install zshПосле установки снова проверьте /etc/shells:
cat /etc/shells
Затем можно запустить оболочку напрямую, чтобы протестировать её работу:
zshЧтобы выйти в предыдущую оболочку, выполните:
exitВажно: убедитесь, что оболочка запускается интерактивно и не падает при старте (проверьте конфигурационные файлы, если они есть).
Шаг 3 — назначить оболочку по умолчанию
Чтобы изменить оболочку для текущего пользователя (логин-оболочку), выполните:
chshВас попросят ввести пароль; затем введите полный путь к оболочке, например:
/usr/bin/zshАльтернативный (однострочный) вариант для смены интерактивной или логин-оболочки:
chsh -s /usr/bin/zshЕсли вы хотите изменить оболочку для другого пользователя (требуются права root):
sudo chsh -s /usr/bin/zsh samПосле изменения выйдите из сессии и войдите снова, чтобы увидеть эффект. При первом запуске zsh часто запускает конфигуратор — выберите опции под свои нужды.
Проверка текущей оболочки:
echo $SHELLЕсли всё прошло успешно, вы увидите путь выбранной оболочки.
Типичные сценарии настройки и кастомизации
- oh-my-zsh: популярный фреймворк для zsh с темами и плагинами. Устанавливайте только из доверенных источников и проверяйте плагины.
- prezto, antigen, zplug — альтернативные менеджеры плагинов для zsh.
- fish использует собственную систему конфигурации; экспортировать конфиги из bash/zsh придётся вручную.
- Алиасы и функции: добавляйте в ~/.bashrc, ~/.zshrc или соответствующий файл вашей оболочки.
Пример простого алиаса в ~/.zshrc:
alias ll='ls -la'Совместимость и когда менять не стоит
Важно:
- Скрипты с хэштегом #!/bin/bash или #!/bin/sh будут по-прежнему работать, если shebang указывает конкретную оболочку. Но системные скрипты могут ожидать POSIX-совместного поведения.
- Не меняйте shell по умолчанию на системных аккаунтах (root, service-аккаунты) без тщательной проверки — это может нарушить работу автозапуска и сервисов.
- Если вы используете корпоративные скрипты, CI-пайплайны или инструменты, полагающиеся на конкретную оболочку, тестируйте изменения в тестовой среде.
Когда не менять:
- На серверах с критичными задачами без возможности быстро откатиться.
- Если у команды нет навыков восстановления в консоли (рекомендуется подготовить инструкции отката).
Тестирование, приёмка и откат изменений
Мини-методология для безопасного перехода:
- Установите и протестируйте оболочку локально в своей учётной записи, не меняя по умолчанию.
- Прогоните наиболее важные скрипты и команды вручную в новой оболочке.
- Настройте окружение (алиасы, PATH, переменные) и сохраните резервные копии конфигов (~/.bashrc, ~/.profile).
- Измените оболочку через chsh; выполните выход и вход.
- Выполните проверочный список (ниже).
Критерии приёмки:
- echo $SHELL показывает путь новой оболочки.
- Вход в систему корректен, нет падений сессии.
- Ключевые скрипты работают (тестовые прогоны CI, если применимо).
- Пользовательское окружение ( алиасы, PATH ) корректно загружается.
Откат (rollback):
sudo chsh -s /bin/bash <пользователь>Затем снова выполните выход/вход.
Чек-листы по ролям
Чек-лист для разработчика:
- Установить оболочку локально и протестировать интерактивные функции.
- Проверить работу git, сборок, линтеров в новой оболочке.
- Сохранить и перенести алиасы и функции.
- Настроить плагины/темы по потребности.
Чек-лист для системного администратора:
- Проверить /etc/shells и системные политики PAM/SSHD.
- Не менять оболочку для root без тестирования.
- Обновить документацию и инструкции для команды.
- Подготовить план отката и доступ к консоли восстановления.
Чек-лист для обычного пользователя:
- Попробовать новую оболочку без установки по умолчанию (ввести её имя в терминале).
- Протестировать привычные команды и алиасы.
- Выполнить смену через chsh и убедиться в результате.
Трудности и отладка (troubleshooting)
Симптом: после входа система возвращает на логин или сессия падает. Решения:
- Войдите через другой TTY (Ctrl+Alt+F2) или через SSH, если доступен, и выполните откат chsh.
- Проверьте права и целостность файла /etc/shells; если путь не указан, вы можете временно указать shell при входе.
- Запустите оболочку вручную и просмотрите вывод ошибок при инициализации, например:
/usr/bin/zsh -xvСимптом: некоторые скрипты перестали работать.
- Убедитесь, что в скриптах указан корректный shebang (#!/bin/bash или #!/usr/bin/env bash).
- Для совместимости используйте sh-совместимые конструкции или запуск через bash: bash script.sh.
Безопасность и права
- Никогда не добавляйте в ~/.zshrc или аналогичный файл команды с небезопасными правами без проверки (например, выполнение скачанных скриптов).
- Не давайте исполняемым конфигурациям более высоких прав, чем необходимо.
- Проверяйте источники тем и плагинов (особенно для oh-my-zsh). Избегайте произвольного выполнения curl | sh.
Совместимость и миграция конфигураций
- Большинство алиасов и простых функций можно прямо перенести в ~/.zshrc; некоторые конструкции (особенно в fish) несовместимы и требуют переписывания.
- Экспорт переменных окружения оставьте в ~/.profile или ~/.bash_profile, если они должны быть доступны вне конкретной оболочки.
Пример переноса простого алиаса:
.bashrc
alias gs='git status'в ~/.zshrc тот же алиас будет работать без изменений.
Набор тестов для проверки корректности установки (acceptance)
- Установлена ли оболочка (проверка /etc/shells и which zsh).
- Работает ли базовая навигация (cd, ls, pwd).
- Работает ли история команд и автодополнение.
- Выполняются ли ключевые скрипты с shebang.
Команды для проверки:
which zsh
cat /etc/shells | grep zsh
echo $SHELLСравнение: когда выбирать zsh vs fish vs bash (упрощённая матрица)
- Интероперабельность со скриптами: bash > zsh > fish
- Интерактивный опыт и подсказки: fish ≈ zsh > bash
- Экосистема плагинов: zsh > bash > fish
Выбор зависит от приоритетов: совместимость, удобство или скорость настройки.
Короткий глоссарий
- shell — оболочка, программа для взаимодействия с ОС.
- chsh — утилита для смены оболочки по умолчанию.
- shebang — первая строка скрипта (#!/bin/bash), указывающая интерпретатор.
- PATH — системная переменная, где shell ищет исполняемые файлы.
Частые ошибки и как их избежать
- Ошибка: указание пути к несуществующей оболочке в chsh. Проверяйте путь через which или /etc/shells.
- Ошибка: менять shell для root без тестирования. Не повторяйте на продакшн-сервере без плана восстановления.
- Ошибка: доверять неизвестным плагинам. Проверяйте исходный код и репутации.
Резюме и лучшие практики
- Всегда тестируйте новую оболочку без изменения по умолчанию, запуская её вручную.
- Сначала проверьте /etc/shells и установите оболочку стандартными пакетными инструментами.
- Для смены используйте chsh, затем выйдите и войдите в сессию.
- Подготовьте план отката и резервные копии конфигов.
- Обновите внутреннюю документацию команды, если смена касается нескольких пользователей.
Важно: не меняйте shell на системных аккаунтах без тестирования и одобрения команды.
Краткая памятка по командам:
cat /etc/shells
sudo apt install zsh # Debian/Ubuntu
sudo pacman -Syu zsh # Arch
sudo dnf install zsh # Fedora/RHEL
zsh # запустить оболочку напрямую
chsh -s /usr/bin/zsh # назначить по умолчанию
echo $SHELL # проверить текущую оболочку
sudo chsh -s /bin/bash # откат для пользователя Если вы хотите, я могу подготовить шаблон ~/.zshrc с минимальными настройками, инструкцию по установке oh-my-zsh безопасным способом или пошаговый план миграции конфигурации из bash в zsh для вашей конкретной среды.
Похожие материалы
Zoom Workplace: AI Companion, вложения и интеграции
Spring Security — настройка аутентификации и прав
Как менять пароли в Linux
Удаление резервных копий Time Machine на Mac
Как включить закрытые субтитры SDH на Mac