
Для системного администратора оболочка (shell) — это не утилита, а среда, в которой проходит большая часть рабочего дня. Часто работа идёт на удалённых серверах, например на виртуальных машинах UltraVDS, где удобная оболочка экономит часы настройки и отладки. Здесь настраиваются сервисы, правятся конфиги, запускаются скрипты и отлавливаются ошибки, и от того, как она себя ведёт, напрямую зависит скорость работы.
Пока задачи простые, хватает и того, что стоит по умолчанию. Но со временем начинаешь замечать мелочи: неудобное автодополнение, непредсказуемая история, странное поведение алиасов. Один раз промахнулся с rm, другой раз команда не сохранилась — и вот ты уже ищешь альтернативу.
Сегодня чаще всего выбор стоит между Bash, Zsh и Fish. Все они решают одну и ту же задачу — запуск команд — но делают это с разной философией. Разберёмся, как они устроены, где их сильные и слабые стороны, и какую оболочку стоит выбрать под конкретные задачи.
1. Bash (оболочка Bourne Again)

Bash — классическая Unix-оболочка, созданная в 1989 году Брайаном Фоксом в рамках проекта GNU. Это основная shell-среда в подавляющем большинстве Linux-дистрибутивов: Debian, Ubuntu, RHEL, CentOS, Arch и другие. До версии Catalina она была оболочкой по умолчанию и в macOS, а в контейнерах и серверных окружениях остаётся стандартом до сих пор.
Главная причина её популярности — строгая совместимость со стандартом POSIX. Скрипты, написанные с учётом этого стандарта, будут исполняться без изменений в любых системах, поддерживающих POSIX — даже в самых минималистичных rescue-средах.
При этом Bash поддерживает и расширения, выходящие за пределы POSIX. Например: массивы, арифметика (( )), конструкции [[ ... ]], а также расширенные параметры команд. Они дают дополнительную гибкость в тех случаях, когда переносимость уже не критична, но удобство скриптинга важно.
Функциональность можно расширить, но из «коробки» Bash довольно скромен. Есть проекты вроде bash-it, но официально плагинов немного. Оболочка настраивается через ~/.bashrc и переменную PS1 (например, PS1="\u@\h:\w\$ "), и по умолчанию имеет простое оформление с минимумом удобств.
Конфигурация распределяется по файлам .bashrc, .bash_profile и .profile — в зависимости от типа сессии. Здесь задаются алиасы, переменные окружения, функции, логика отображения приглашения. При желании функциональность можно расширить:
подключить bash-completion для более гибкого автодополнения;
интегрировать fzf для интерактивного поиска;
использовать сторонние тулчейны вроде Starship.
Типичные настройки — это ~/.bashrc, где создают алиасы (alias ll='ls -la'), настраивают $PATH, PROMPT_COMMAND и прочее. Bash-completion помогает с автодополнением параметров, но изначально оно базовое. В языке нет особых «фишек» — это простая, проверенная оболочка. Зато многие скрипты, написанные на Bash, работают сразу без переделки.
По производительности Bash ближе к Fish — тоже прост в запуске, но скорость зависит от конфигурации. Большое количество source-подключений в ~/.bashrc может замедлять старт. Оболочка поддерживает ряд собственных расширений: массивы, арифметику (( )), ключевые слова [[ ... ]], дополнительные параметры команд.
По части UX — скромно, но стабильно. По Tab дополняются файлы и команды (при наличии bash-completion — параметры). Поиск по истории работает через Ctrl+R или стрелки. История между сессиями по умолчанию не разделяется — в отличие от Zsh и Fish, где это настроено изначально.
Если вы используете готовые shell-скрипты или пишете под разные системы, Bash остаётся наиболее универсальным решением. Совместимость — его главное преимущество. Многие скрипты разворачиваются на виртуальных серверах, где стабильность и предсказуемость оболочки критичны для непрерывной работы сервисов. А огромное количество документации делает Bash одним из самых хорошо описанных shell’ов.
Итак, среди преимуществ Bash:
поддержка POSIX без дополнительных усилий;
широкая распространённость — уже установлен практически везде;
огромное количество гайдов, статей и документации;
стабильность и минимальные накладные расходы.
К недостаткам относим ограниченные возможности и ручную настройку из-за того, что в Bash отсутствует множество предустановленных функций для повышения удобства использования, поэтому пользователям обычно приходится вручную настраивать файл .bashrc или устанавливать сторонние инструменты.
2. Zsh (оболочка Z)
Zsh разработана в 1990 году Полом Фалстадом, когда тот учился в Принстоне. Она строилась как расширение Bourne-подобного shell, но вобрала в себя возможности KornShell и C Shell, а со временем превратилась в мощную и гибкую оболочку, которая заметно отличается по удобству от классических вариантов. С 2019 года Zsh используется по умолчанию в macOS (начиная с Catalina).
Полной POSIX-совместимости у Zsh нет, хотя большинство Bash-скриптов выполняются без изменений. При необходимости Zsh может запускаться в режиме sh, а синтаксис во многом пересекается с Bash.
Оболочка вводит собственные расширения и поведение, которые могут влиять на совместимость в нетривиальных сценариях.
Zsh оснащена современным автодополнением, которое по Tab предлагает не только имена файлов, но и параметры команд, опции и даже значения. Интеграция с плагинами вроде zsh-autosuggestions и zsh-syntax-highlighting позволяет получать интерактивные предложения и подсветку прямо в процессе набора. Поддерживается и автоматическая проверка опечаток: если вы ввели команду с ошибкой, Zsh может предложить корректный вариант.
Экосистема вокруг оболочки развита: фреймворки вроде Oh My Zsh, Prezto, Zinit позволяют гибко управлять конфигурацией, темами, плагинами и функциями. Часто используется тема agnoster и плагины git, zsh-autosuggestions, zsh-syntax-highlighting, которые включаются напрямую в ~/.zshrc.
Основной конфигурационный файл — ~/.zshrc. Здесь задаются все настройки: переменные окружения, алиасы, подключение тем, плагинов, расширенных опций. Например, setopt share_history позволяет делить историю между сессиями, а setopt extendedglob — использовать продвинутые шаблоны сопоставления. Кроме того, поддерживаются глобальные алиасы (alias -g G='| grep') и поиск файлов по паттерну **/*.log — без внешних утилит.
История команд в Zsh по умолчанию разделяется между всеми сессиями — то, что вы выполнили в одном терминале, уже доступно в другом. Поиск по истории также работает через Ctrl+R, но его можно расширить при помощи fzf.
Функционально Zsh значительно превосходит Bash, особенно в интерактивном использовании, но оболочка требует настройки. Без фреймворков она выглядит довольно просто, а большая часть удобств появляется только после включения плагинов. Поэтому новичку может показаться, что Zsh не работает из «коробки» — хотя на самом деле просто нужно выбрать подходящий набор расширений.
Документация по Zsh обширна, но чуть менее стандартизирована, чем у Bash. Тем не менее сообщество активно — и на GitHub, и на форумах. Большинство проблем уже разобрано, а готовых конфигураций и примеров более чем достаточно.
К преимуществам Zsh относим:
гибкое автодополнение с возможностью расширения плагинами;
общая история между сессиями по умолчанию;
мощный механизм шаблонов (glob);
поддержка опечаток и контекстных подсказок;
развитая экосистема фреймворков и тем.
Среди недостатков — необходимость начальной настройки и отсутствие полной POSIX-совместимости. Некоторые bash-скрипты могут вести себя иначе, а богатство настроек поначалу может сбивать с толку.
Как установить Zsh
Данная оболочка в Debian устанавливается с использованием пакетного менеджера apt:
sudo apt update
sudo apt install zsh
После установки нужно проверить версию, чтобы убедиться, что оболочка проинсталлирована успешно:
zsh –version
Ожидаемый вывод должен выглядеть примерно так:

Чтобы при входе в систему вместо Bash запускалась Zsh, запускаем команду:
chsh -s $(which zsh)
Новая оболочка применяется при следующем SSH-подключении. В открывшемся меню нажимаем q для выхода без сохранения, при следующем подключении оно появится снова. 0 — будет создан пустой файл ~/.zshrc, содержащий один комментарий. При этом меню больше не появится, а оболочка будет работать без настроек. Выбор 1 позволит перейти в основное меню, где можно будет включить дополнительные опции. Для создания файла ~/.zshrc с минимальным шаблонным набором настроек нажимаем 2.

Можно дополнить оболочку фреймворком, например, Oh My Zsh. Его нужно устанавливать отдельно, команда выглядит следующим образом:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)
Такая установка требует наличия в системе установленных пакетов git и curl. Проверить их присутствие и проинсталлировать, если данные утилиты отсутствуют, можно командой:
sudo apt install git curl
В результате создаётся файл ~/.zshrc с дефолтной темой — robbyrussell и при следующем запуске терминала перед нами — изменённый и более функциональный shell.

Чтобы выбрать другую тему, например, agnoster, открываем ~/.zshrc и строку ZSH_THEME="robbyrussell" заменяем на ZSH_THEME="agnoster". Закрываем файл с сохранением внесённых изменений и применяем изменения:
source ~/.zshrc
Если вдруг Zsh надоела и надо вернуть Bash, то запускаем команду:
chsh -s $(which bash)
3. Fish (Friendly Interactive Shell)

Fish появилась в 2005 году по инициативе Акселя Лильенкранца. В отличие от Bash и Zsh, она изначально создавалась как оболочка, ориентированная на удобство, но не совместимая с POSIX. Здесь другой синтаксис: циклы for заканчиваются end, переменные задаются через set, нет конструкции for ...; do ...; done, а переменные из аргументов передаются через $argv, а не привычный $1, $2 и так далее.
Скрипты, написанные для Bash или Zsh, как правило, не будут исполняться без изменений — их нужно адаптировать под Fish.
Оболочка включает автодополнение, подсветку синтаксиса, контекстные подсказки, инкрементный поиск по истории, помощь по командам через help, встроенный веб-интерфейс настройки и множество мелочей, которые в других shell реализуются только через плагины. Все эти функции работают сразу после установки, без правки конфигов.

Настройка Fish — одна из самых простых среди всех оболочек. Вместо редактирования конфигов вручную можно запустить fish_config, и откроется полноценный веб-интерфейс с выбором тем, цветовых схем, функций и предустановленных конфигураций. Основной файл настроек — ~/.config/fish/config.fish. Здесь определяются переменные, алиасы (в виде сокращений или функций), логика автозапуска и поведение оболочки.
Одна из уникальных возможностей оболочки — универсальные переменные (set -U), которые доступны сразу во всех будущих сессиях. Задали set -U EDITOR vim — и оболочка запомнила это навсегда, без перезагрузок. Чтобы удалить переменную, достаточно set --erase.
Fish работает быстро, а при вводе команды появляется подсказка на основе истории, текущего каталога и ранее использованных аргументов.
В плане расширяемости Fish ещё моложе своих конкурентов. Есть фреймворки Oh My Fish и Fisher, но число тем и плагинов пока меньше. Зато многое из того, что в других оболочках требует сторонних решений, здесь уже встроено и просто работает.
По документации команда help открывает подробный мануал в браузере, а для базовой работы часто даже не нужен Stack Overflow.
Итак, среди преимуществ Fish:
подсветка синтаксиса в реальном времени;
простая настройка с поддержкой универсальных переменных;
быстрая запуска, даже с большим количеством функций;
отлично подходит для интерактивной работы;
понятный синтаксис и человекочитаемые конфиги.
Но, как и в других оболочках, тут есть недостатки:
в отличие от Bash и Zsh, Fish не соответствует стандарту POSIX, что означает, что скрипты, написанные для Bash или других POSIX-совместимых оболочек, могут некорректно работать в Fish без изменений;
поскольку Fish — более новая оболочка, у неё меньше сообщество и ресурсов, чем у Bash и Zsh.
Как установить Fish
Fish, как и Zsh, можно установить в Debian при помощи apt:
sudo apt update
sudo apt install fish
Даже команда для проверки версии пакета выглядит аналогично:
fish --version
Вывод её выглядит примерно следующим образом:

Оболочку Fish можно опробовать перед тем, как начать использовать на постоянной основе:
fish

Чтобы вернуться обратно в Bash, вводим команду:
exit
Или используйте Ctrl D.
Следующая команда делает Fish оболочкой по умолчанию:
chsh -s $(which fish)
Оболочка применяется после переподключения SSH-сессии и только для текущего пользователя.
Fish обладает списком плагинов, которые можно устанавливать дополнительно ориентируясь на различные задачи — навигация, программирование или ещё что-нибудь. Для добавления плагинов используется плагин-менеджер fisher, который сначала необходимо установить:
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
Следующая команда устанавливает, например, плагин jethrokuan/z, который при помощи утилиты z упрощает навигацию, позволяя быстро переходить к каталогам по частичному совпадению, опираясь на историю команд:
fisher install jethrokuan/z
Для удаления плагина запускаем команду:
fisher remove jethrokuan/z
Есть и другие плагины, конечно. Подробнее о них — на GitHub-страничке fisher.
Перейти с Fish обратно на Bash помогает команда:
chsh -s $(which bash)
Работа в разных средах
На Linux все три оболочки доступны и легко устанавливаются через менеджеры пакетов (Bash уже предустановлена почти везде).
На macOS по историческим причинам долгое время была устаревшая версия Bash (GPLv2) по умолчанию, и только с macOS Catalina Apple официально перешла на Zsh как стандартную оболочку. Тем не менее Bash (свежее версии 3.2) и Fish можно установить через Homebrew/MacPorts.
В WSL на Windows стандартной является Bash, но и Zsh, и Fish устанавливаются через пакетные системы (Zsh популярна среди продвинутых пользователей Windows/*nix, Fish тоже работает в WSL).
В целом Bash везде по умолчанию, Zsh появился в macOS, есть форки для Windows, а Fish используется чуть реже, но её кроссплатформенность подтверждена на Windows-дистрибутивах WSL/Cygwin, macOS и большинстве Linux/BSD.
Интеграция с инструментами
В современной практике терминалы часто дополняют внешними тулчейнами. Например, Oh My Zsh — популярный фреймворк для Zsh, содержащий сотни плагинов и тем. Для Fish есть аналог Oh My Fish (и менеджер Fisher).
Для всех оболочек доступен кроссплатформенный Starship — быстрый кастомизируемый скрипт, который одинаково работает в Bash, Zsh и Fish.
Многие также используют fzf для интерактивного поиска в истории, autoenv / direnv для переменных окружения и т. д., но в целом Zsh имеет наибольшую интеграцию «из коробки», а Fish же нередко довольствуется собственными встроенными фичами.
Что выбрать?
Каждая из трёх оболочек имеет свои плюсы и минусы: Bash — проверенный стандарт для скриптов и серверов (POSIX, минимальное потребление ресурсов), Zsh — «мощная и гибкая» оболочка с обширной экосистемой плагинов и тем, Fish — современная оболочка с удобствами «из коробки» (автоподсказки, подсветка, простая конфигурация).
Критерий |
Bash |
Zsh |
Fish |
ОС (поддержка) |
Linux, macOS (GPLv2- баш 3.2), WSL |
Linux, macOS (Catalina+ по умолчанию), Windows (UnxUtils) |
Linux, macOS, BSD, Windows (WSL/ Cygwin) |
Плагины и темы |
Сторонние проекты (bash-it и др.) |
Богатая экосистема (Oh My Zsh, Prezto, zplug и др.) |
Oh My Fish, Fisher и др., но сообщество меньше |
Настраиваемость |
Минимальна, но возможна через ~/.bashrc (alias, PS1 и др.) |
Гибкая (~/.zshrc, множество опций и тем) |
Простая через веб-интерфейс настроек (команда fish_config) |
Автодополнение |
Базовое (Tab дополняет файлы/ команды) |
Продвинутое (Tab с выпадающими списками) |
По истории и контексту (вводимые подсказки) |
Подсветка синтаксиса |
В «коробке» нет, но можно добавить вручную) |
Есть (через фреймворки/плагины или встроенные темы) |
Встроена по умолчанию |
Совместимость POSIX |
Полная (с расширениями) |
Частичная (большинство скриптов запускаются, но есть отличия) |
Не совместима |
Производительность (запуск) |
Хорошая с минимальными накладными расходами |
Медленна, особенно с множеством плагинов |
Очень быстрая (почти как Bash) |
Документация, help |
Обширная (много книг и статей) |
Много ресурсов (документация, блоги, форум) |
Команда help открывает интерактивную справку в браузере |
Удобство для новичков |
Требует ручного конфигурирования |
Богатые возможности, но кривая обучения |
Интуитивные подсказки, подсветка и веб-интерфейс |
Выбирать стоит исходя из задач:
если нужно писать переносимые скрипты, запускать их на разных nix-системах (особенно в продакшене), выбор очевиден: Bash (или Zsh в sh-режиме);
если вы проводите много времени в терминале, любите настраивать рабочую среду и использовать фреймворки, отличным выбором станет Zsh;
если хочется сразу получить красивые подсказки, автодополнения и современный интерфейс без долгой настройки, Fish порадует «приятностью» использования.
Особо рекомендуем Fish тем, кто хочет «интерактивный терминал без мучительной настройки», но учитывайте его ограничения с POSIX. На продакшен-серверах часто админы оставляют Bash (или легкую конфигурацию Zsh).
Итак, консерваторам и поклонникам классики можно оставить Bash, особенно на продакшен-серверах или виртуальных машинах UltraVDS, где критична стабильность и совместимость. Если нужна гибкая и настраиваемая оболочка — Zsh (желательно с Oh My Zsh), а тем, кому нужен интерактивный терминал без особых настроек, смело советуем Fish.
morheus9
Я выбираю Warp: Download: Get the Agentic Development Environment
maratkoRuEkb
Ну хоть напишите чем он вам нравится и какие есть фишки.
morheus9
А легко.
нормальное автодополнение - оно есть
встроенный ии помощник, которому можно позадавать вопросы и проконсультироваться по дальнейшим командам или даже напряму дать ему выполнить. не надо лезть в браузер или куда-то еще или костылить cli-йками
он вполне красивый, но это вкусовщина
на расте, тут конечно кому плюс кому минус, но как минимум мультиплатформенный, что, очевидно, плюс
работает из коробки, не надо настраивать, как всякие zsh и проч или конфиги качать, чтобы получить тот же функционал
касательно коммента ниже про то что он отжирает место на мониторе - извините в каком это месте отжирает? он ровно так же как терминал по полезной площади. и да ТАМ МОЖНО ПРОЛИСТАТЬ ВВЕРХ колесиком если вдруг надо и настроить шрифт, что вам еще надо? Может вам стоит монитор покрупнее купить или научиться вкладками пользоваться в терминале?
И да, если вы думаете что я рекламирую и т д , то нет, я просто поделился инструментом, который понравился и может быть понравится кому-то еще.
Но сверхразумы сразу наставили дизов.
Впрочем, не удивительно, что при такой плотности коммунистов на 1 квадратный метр комментов на хабре, что тут столько обиженок, которые к чужое мнение в принципе не способны переварить.