Что такое shell, bash, zsh? В чём различия?
Shell (оболочка) — это программа-интерпретатор командной строки, которая принимает текстовые команды от пользователя и передаёт их ядру операционной системы для выполнения.
Аналогия
Представьте ресторан: вы (пользователь) говорите официанту (shell), что хотите заказать, а он передаёт ваш заказ на кухню (ядро ОС). Разные официанты (bash, zsh, fish) могут по-разному принимать заказы — у одного есть меню с картинками, другой запоминает ваши предпочтения — но кухня одна и та же.
Основные оболочки
Bash (Bourne Again Shell) — наиболее распространённый shell в Linux-системах, созданный в 1989 году как свободная замена оригинального Bourne Shell (sh). Является стандартной оболочкой в большинстве дистрибутивов Linux и в macOS до версии Catalina.
Zsh (Z Shell) — расширенная оболочка, совместимая с bash, но обладающая дополнительными возможностями. С macOS Catalina (2019) является оболочкой по умолчанию в macOS.
Сравнение bash и zsh
| Характеристика | Bash | Zsh |
|---|---|---|
| Автодополнение | Базовое (Tab) | Продвинутое (Tab с меню выбора, исправление опечаток) |
| Глобинг | Стандартные wildcards | Расширенный glob (**/*.java без find) |
| Темы и плагины | Нет встроенной поддержки | Oh My Zsh — мощный фреймворк |
| Промпт | Простая настройка через PS1 |
Гибкая настройка с правым промптом |
| Общая история | Нет (по умолчанию) | Общая история между сессиями |
| POSIX-совместимость | Высокая | Частичная (есть расхождения) |
| Файлы конфигурации | .bashrc, .bash_profile |
.zshrc, .zprofile |
Другие оболочки
Помимо bash и zsh существуют и другие оболочки:
- sh (Bourne Shell) — оригинальная оболочка Unix, минималистичная.
- fish — «дружелюбная» оболочка с подсветкой синтаксиса и автодополнением из коробки.
- dash — лёгкий POSIX-совместимый shell, часто используется для системных скриптов (
/bin/shво многих дистрибутивах Debian/Ubuntu указывает именно на dash).
Основные команды
Пример
# Узнать текущий shell
echo $SHELL
# Посмотреть доступные shell в системе
cat /etc/shells
# Сменить оболочку по умолчанию
chsh -s /bin/zsh
На собеседовании: интервьюер хочет убедиться, что вы понимаете роль shell как посредника между пользователем и ядром ОС. Частая ошибка — путать shell (интерпретатор команд) с терминалом (программа-окно, в котором работает shell).