Fish — это как Bash, только с мозгами. Вот как его установить в Ubuntu

Bash — это оболочка по умолчанию в Ubuntu, и, честно говоря, в ней нет ничего плохого. Но если вы проводите много времени в терминале, возможно, вам стоит попробовать альтернативные оболочки, поскольку они часто предоставляют дополнительные удобства, и вы удивитесь, как раньше обходились без них.
В конце концов, рак-отшельник регулярно меняет свой панцирь, так почему бы хитрым пользователям Linux не делать то же самое?
Fish (что расшифровывается как Friendly Interactive Shell) — это альтернатива Bash, написанная на Rust (ранее на C++). Создатели позиционируют её как «оболочку командной строки для 90-х». Это бесплатное программное обеспечение с открытым исходным кодом, которое работает во всех системах Unix, а не только в Linux.
Его отличает набор функций, которые могут сделать работу в терминале Ubuntu менее утомительной: он подсвечивает синтаксические ошибки до того, как вы нажмёте Enter, предлагает команды на основе вашей истории и предоставляет действительно полезное автодополнение.
Ни одна из этих функций не является обязательной для всех, но по сравнению с базовым Bash они могут показаться суперспособностями.
Что рыба привносит в нашу жизнь
Fish выделяет команды по мере их ввода. Допустимые команды отображаются синим цветом, недопустимые — красным, а разные части команд выделены разными цветами. Это позволяет быстро выявлять опечатки и облегчает чтение длинных или сложных команд.
Лично я считаю, что автодополнение — это самое большое преимущество. По мере ввода текста серым цветом отображаются возможные варианты завершения команды, которые берутся из вашей истории команд:

Автодополнение отображается серым цветом по мере ввода
Если вы часто используете длинные команды, но редко помните их целиком, эта функция сэкономит вам время: вам не придётся нажимать клавишу со стрелкой вверх, чтобы найти нужную команду.
У меня есть подробные ffmpeg
команды, которые мы часто запускаем, меняя только пути к файлам. С Fish мне нужно всего лишь ввести ffmpeg
— и вуаля, мне предлагается список флагов, аргументов, переменных и настроек, который я могу принять, нажав клавишу со стрелкой вправо.
В противном случае я могу продолжать печатать всё, что захочу запустить.
Аналогичным образом вы можете создавать сокращения в Fish. Это пользовательские ярлыки, которые при вводе раскрываются до полной команды (как текстовый экспандер). Эти сокращения позволяют экономить время при частом выполнении длинных команд.
Автодополнение в fish — это совсем не то, что предлагает Bash:

Автодополнение в Fish — это нечто особенное
Когда вы нажмёте tab, Fish перечислит возможные варианты с краткими описаниями того, что они собой представляют или что делают. Так вам будет проще узнать о командах или пакетах (даже без специальных знаний), не прибегая к введению --help
или открытию man
страниц.

Вы можете перемещаться по списку, чтобы выбрать нужный вариант
Веб-инструмент для настройки позволяет легко персонализировать и оптимизировать Fish Shell в соответствии с вашими предпочтениями.
Запустите fish_config
, и откроется страница в вашем браузере по умолчанию. Там вы можете настроить цвета, просмотреть функции, переменные, просмотреть историю последних команд и настроить другие параметры без необходимости открывать файл конфигурации в текстовом редакторе (но вы можете это сделать).
Вы можете настроить подсказку1 (часть с вашим именем пользователя, именем хоста и текущим каталогом), выбрав предустановленный вариант или создав свой собственный. Для ценителей эстетики Linux индивидуальная подсказка станет отличным завершающим штрихом в персонализации рабочего стола.

Настроить внешний вид рыбы можно с помощью веб-интерфейса
Кроме того, Fish делает несколько вещей, которые Bash делает иначе (в лучшую сторону).
Например, вы вводите подстановки команд в скобках (квадратных скобках), а не в обратных кавычках (`); статус завершения последней команды сохраняется в $status
, а не в $?
; вы определяете переменные с помощью специальных команд, таких как set
, а не с помощью загадочного синтаксиса.
Полный список этих различий можно найти в руководстве на сайте, а также на специальной странице для пользователей Fish for Bash.
Это не все функции Fish, но те, которые, на мой взгляд, делают его настоящим хитом. Если вы хотите попробовать, то у меня для вас хорошие новости: Fish доступен в репозиториях Ubuntu, поэтому его легко установить.
Как установить Fish в Ubuntu
Вы можете установить Fish в Ubuntu напрямую из репозиториев. В репозиториях Ubuntu 24.04 LTS представлена версия на C++ (3.x), а в репозиториях Ubuntu 25.04 — новая серия на основе Rust (4.x):
sudo apt install fish
Для установки последней версии используйте официальный PPA Fish, который поддерживает Ubuntu 22.04 LTS и более поздние версии:
sudo apt-add-repository ppa:fish-shell/release-4
sudo apt update && sudo apt install fish
После установки запустите Fish, введя fish
в предпочитаемом вами эмуляторе терминала.
После тестирования, если вы хотите сделать Fish оболочкой по умолчанию в Ubuntu, выполните следующую команду:
chsh -s /usr/bin/fish
Однако для того, чтобы это изменение вступило в силу, вам нужно будет выйти из системы и снова войти.
Будьте осторожны при использовании chsh
, так как при неправильном указании пути вы можете временно лишиться доступа к оболочке. Если это произойдет, вы сможете восстановить доступ с помощью аварийной оболочки или другого способа входа в систему. Однако осторожность с самого начала избавит вас от лишних хлопот.
Соображения о совместимости
Fish хорошо подходит для интерактивного использования терминала, но он не соответствует стандарту POSIX. Это завуалированный способ сказать, что некоторые сценарии Bash, в основном те, которые используют специфический синтаксис Bash, не будут работать напрямую (без изменений).
Насколько сильно это повлияет на повседневную работу с терминалом, зависит от конкретных случаев использования. Но Bash — это команда, которую можно использовать по мере необходимости.
Пользователи, которые экономят ресурсы, могут захотеть узнать, что Fish использует больше памяти, чем Bash, из-за своих дополнительных функций. Это не такой уж большой недостаток, учитывая, что в современных системах увеличение объёма памяти составляет всего 4 МБ или около того.
Заглотили наживку?
Если вы пользователь Ubuntu, который редко пользуется терминалом и ограничивается несколькими короткими простыми командами, то вам нет необходимости переходить на Bash. Bash — это базовый инструмент, но большинству людей достаточно и базового.
Но если вы регулярно пользуетесь командной строкой и используете её не только для запуска команд apt
, то переход на Fish может ускорить ваш рабочий процесс, снизить трудозатраты и (для тех, кто печатает неаккуратно) помочь избежать досадных ошибок.
Это всё ещё просто оболочка, хотя и более продвинутая: Fish — это как Bash, только с мозгами.
Как сказано в описании на официальном сайте, это современный терминал (насколько это вообще возможно для терминальных оболочек), предлагающий отточенный, продуманный и интегрированный набор функций.
Редактор: AndreyEx