Gymterview
junior

Что такое 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).