LINUX.ORG.RU

В чём различие между fish, zsh, bash и других?

 , , , ,


0

1

Доброго времени суток! Хотелось бы узнать в чем разница между оболочками. Какую из них стоит юзать и почему? Желательно привести аргументы за и против. Ещё хотелось бы узнать где это применяется. Я знаю что bash используется для написания скриптов так что могу предположить что и остальные тоже. Можете подробнее объяснить новичку?

P.S: Я знаю что вопрос глупый, но что поделаешь если я об этом почти ничего не знаю? Приходиться спрашивать у более опытных людей.


Ответ на: комментарий от Im_not_a_robot

Вот что пишут про dash убунтовцы: https://wiki.ubuntu.com/DashAsBinSh

The boot speed improvements in Ubuntu 6.10 were often incorrectly attributed to Upstart, which is a fine platform for future development of the init system but in Ubuntu 6.10 was primarily running in System V compatibility mode with only small behavioural changes. These improvements were in fact largely due to the changed /bin/sh.

annulen ★★★★★
()

Из того, с чем имел дело.

bash - оболочка по умолчанию, с адекватными настройками в большинстве дистрибутивов из коробки. Это единственная причина её использовать. Неповоротливая, настраивается и расширяется сложно, по возможностям уступает более продвинутым оболочкам.

zsh - как баш, только лучше. Быстрее, больше интерактивных возможностей, легче расширяется и настраивается. Переход не представляет никаких сложностей кроме одной проблемы - чаще всего идет без адекватных настроек по умолчанию, а первым делом новички натыкаются на перегруженный oh-my-zsh. Адаптация после баша сводится к тому, что надо дополнительно экранировать ‘=’ и ‘[]’.

dash - минималистичная, нетребовательная и быстрая. Для запуска скриптов, встроенных систем и в целом для железок, где держать bash или zsh накладно.

fish - идея этого шела в решении типичных юзкейсов пользователя из коробки и отказе от архаичного синтаксиса bash/zsh. Несовместимость с bash слегка усложняет тупой копипастинг скриптов из сети, но ничего не мешает запускать их через bash. Нет продвинутых возможностей шелов типа xonsh и nushell, но и нет сопутствующих проблем. Причина не использовать фиш - вы уже настроили zsh и привыкли к POSIX-like шеллам.

xonsh - идея этого шела в совмещении всех мощей и удобств питона, при этом не теряя возможности привычного выполнения команд с пайпами и перенаправлениями. У POSIX шеллов ужасный синтаксис и всякие циклы, ветвления, глоблинг, работа с математикой и строками гораздо проще в питоне. Но вызывать curl или cat вместо конструирования запросов или открытия файлов в питоне гораздо быстрее. Xonsh почти решает эти проблемы, но есть неприятные побочные эффекты. Это самый тормозной шел, который можно уронить или повесить тем же самым глоббингом или работой со строками там где справился бы обычный for i in $(ls) или awk. Для некоторых юзкейсов работает просто отлично, а в качестве основного шелла можно использовать что-нибудь попроще. Из плюсов, очень легко расширяется и настраивается.

altwazar ★★★★
()
Ответ на: комментарий от annulen

Тут, наверное, речь о том, что народ порой в скрипт, начинающийся с #!/bin/sh, пихает башизмы.

Хотя правильней, в этом случае, будет писать #!/bin/bash.

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 1)
Ответ на: комментарий от Harliff

Если я правильно понимаю, то /bin/bash – это скорее легаси, которое есть везде. А правильно сейчас /usr/bin/bash.

Кстати говоря, тут возмущались, что в fish не работают клещи, дескать сломали. А слона-то и не приметили! В fish не работают стандартные циклы и ветвления с шеловскими done/fi. В Фиш они все завершаются end и стандартные не работают. Так-то, по хорошему, оно правильней, но я долго соображал что у меня в for не так, пока не узнал :)

Im_not_a_robot ★★★★★
()

Это разные языки. Есть сферический в вакууме SHELL, а то его конкретные реализации. У них есть отличия как в синтаксисе, так и в семантике языка, например, в ZSH индексы начинаются с 1!!! Че выбрать? ZSH - самый популярный. У него есть oh-my-zsh и еще куча разных менеджеров плагинов, а еще можно табом аргументы автоподстановки выбирать и тп просто первая ссылка, раз не можешь нагуглить. Fish раньше был популярен, сейчас не нужен, так как его фишки убоги на фоне zsh с плагинами.

uwuwuu
()