Почему bash является стандартом в Linux?

19

Большинство последних дистрибутивов Linux включают bash в качестве оболочки по умолчанию, хотя есть и другие (возможно) лучшие оболочки.

Я пытаюсь понять, является ли это каким-то историческим пережитком, который никто не хочет менять, или есть какие-то веские причины, которые делают bash первым выбором?

Милан Бабушков
источник
19
Большинство компьютеров продаются с установленной MS Windows, хотя есть и другие, возможно, лучшие операционные системы.
Чороба
Баш прост. Обычно он может делать все, что хочет пользователь. Вы можете легко переключить его. По умолчанию будет не очень интересно иметь scsh.
2012 года
4
Bash - это реализация OSS стандарта UNIX /bin/sh, который является оболочкой по умолчанию в «нормальных» UNIX-системах ...
Ян Марек
Я знаю, что это ссылка на вики, но она подробно отвечает на ваш вопрос: что у одной оболочки, чем у другой en.wikipedia.org/wiki/Unix_shell
whoami
6
Пожалуйста, определите (возможно) лучше . Я думаю, что bashэто лучшая оболочка, потому что я ее хорошо знаю, и она везде, делает все, что мне нужно, кратко и относительно легко, легко читается и может быть понятна людям, не зная, как создавать сценарии bash. Что еще ты хочешь от снаряда? Если вам нужно много функций программирования, вы неправильно используете оболочку.
nicerobot

Ответы:

18

Короткий ответ - потому что linux действительно GNU / Linux. Только ядро ​​является linux, но базовый набор утилит, обеспечивающих среду, подобную Unix, предоставляется GNU, а оболочка GNU - bash.
Как я уже сказал, это короткий ответ;)

отредактировано, чтобы добавить дополнительный комментарий ...
Позвольте мне префикс, сказав, что я не историк Unix, так что я могу ответить только IMHO

Несколько моментов, прежде всего bash - это раковина раковин, как emacs для редакторов.
На момент выпуска bash не было свободных реализаций ksh, tcsh была бесплатной заменой csh, но у Столлмана был разглагольствование против csh для программирования оболочки.
Как интерактивная оболочка, bash имел отличный отзыв истории / команд, а также сохранение истории от сеанса к сеансу. Это было заменой sh, bsh, ksh для программирования оболочки и сделано для достойной интерактивной оболочки.
Как снежный ком, катящийся вниз по склону, удар набирает обороты и размеры.

Да, есть десятки других оболочек; Оболочки, которые лучше подходят для индивидуального назначения или вкуса, но для одиночного всхода раковины делают достойную работу и смотрят на это более 20 лет.

BSD
источник
Я понимаю. Тем не менее, большинство дистрибутивов включают в себя много других не-GNU программного обеспечения. Мне кажется, что bash используется только потому, что он используется, как прокомментировал Чороба из-за того, что Windows является доминирующей ОС. Однако в течение десятилетий Windows имела лучшую аппаратную поддержку (драйверы), что затрудняло переключение на другие ОС. Я не вижу, какую уникальную функцию предлагает Bash для предотвращения переключения пользователей?
Милан Бабушков
+1 и хороший один @bdowning за короткий и простой ответ :-)
Никхилу Mulley
2
@ MilanBabuškov Bash должен быть установлен, потому что слишком много сценариев, использующих специфичные для bash функции. Как только вы начнете с этого предположения, вы должны оправдать дополнительные оболочки. Dash включен в дистрибутивы, такие как Ubuntu, как часть плана по сокращению времени загрузки. Учитывая, что bash «достаточно хорош» как интерактивная оболочка, ни одна другая оболочка еще не дала достаточно сильный аргумент, чтобы быть частью загрузки пакета по умолчанию.
Ssokolow
12

У Bash есть несколько потенциальных конкурентов:

  • У Zsh есть более продвинутые интерактивные возможности, но есть некоторые причуды, когда дело доходит до сценариев (теперь меньше, чем когда-либо). В начале и середине 1990-х годов, когда Linux находился в зачаточном состоянии, zsh был практически неизвестен.
  • Ksh был стандартом де-факто для коммерческих объединений с середины 1980-х годов, но до 2000 года это было проприетарное программное обеспечение, поэтому в Linux его нельзя было использовать. Кроме того, у ksh были возможности редактирования командной строки subpar по сравнению с bash.
  • Pdksh , бесплатный клон ksh, был бы вариантом, но он не был известен и имел слабые возможности редактирования командной строки. (Pdksh больше не является очень активным проектом, хотя он все еще используется в некоторых BSD, теперь, когда ATT ksh свободен.)
  • Некоторые дистрибутивы устанавливают зольную версию как /bin/sh. Ясень (под которым я подразумеваю любое из рыхлого семейства оболочек, называемых пеплом) разработан так, чтобы быть маленьким и быстрым, без интерактивных функций (он предназначен только для редактирования скриптов). Возрождение пепла относительно недавно; в 1990-х годах существующим вариантам не хватало многих возможностей.
  • Tcsh была самой продвинутой интерактивной оболочкой, пока не появилась zsh, но она несовместима с sh и не очень хороша для сценариев .

Кроме того, bash является официальной оболочкой GNU , а системы Linux на самом деле являются GNU / Linux : многие из основных программ исходят из GNU, даже если самая известная часть, ядро ​​Linux, не делает этого. В то время, когда он стал стандартом де-факто, bash был хорошо известен, имел официальный статус и имел приличный набор функций.

Жиль "ТАК - прекрати быть злым"
источник
Как я понимаю, стандарт POSIX определяет необходимые функции для оболочки Bourne, в / bin / sh, и большинство дистрибутивов Linux зависят от сценариев оболочки, написанных для использования оболочки Bourne. BASH по сути является улучшенной версией оболочки Bourne, а / bin / sh на самом деле является ссылкой на / bin / bash, которая при запуске работает только с функциями оболочки Bourne.
bgvaughan
@bgvaughan Некоторые дистрибутивы отправляют bash as /bin/sh, другие отправляют пепел. Например, Ubuntu какое-то время /bin/shбыла dashразвилкой пепла, поддерживаемой Debian. Bash имеет больше возможностей, зола меньше и быстрее. Оба являются POSIX-совместимыми (или, по крайней мере, достаточно совместимы на практике).
Жиль "ТАК - перестань быть злым"
4

Самый простой ответ? Потому что что-то «должно быть» по умолчанию. Наиболее разумным по умолчанию является тот, который большинству пользователей уже удобен. В этом смысле Bash - хороший выбор. У каждого есть свобода выбора лучшего в своем мире. Большинство выберет использовать по умолчанию, если он всегда делал то, что им нужно.

BentFX
источник
3

Исходя из DOS (с установленным doskey) я действительно упустил возможность вспомнить последние команды, просто перемещая курсор вверх / вниз. BASH был IMO первой оболочкой, которая реализовала это на * nix.

Так что, вероятно, большинство парней того поколения любили bash.

Nils
источник
Не использовав компьютер до 1990-х годов, я предполагал, что это tcshбыла первая * nix оболочка, которая использовала клавиши со стрелками для навигации по истории оболочки.
Энтони Дж. - справедливость для Моники
1

Все остальные ответы хороши, но с практической точки зрения: если я сижу перед незнакомой системой (или получаю к ней удаленный доступ) и мне нужно что-то делать, я могу рассчитывать на доступность bash на всех, кроме самых старых, системах. Я могу просто пойти дальше и добиться цели.

Как указано в других ответах и ​​в вашем вопросе, есть много других оболочек (я слышал много хорошего о zsh, но не пробовал.), Но они различаются в зависимости от синтаксиса и иногда используемых команд чтобы добиться цели. Если я просто хочу что-то сделать, bash достаточно сложен без необходимости адаптации к другой оболочке.

Кроме того, когда я пишу сценарий оболочки, который может быть в целом полезен, я пишу его для bash и знаю, что, если я буду очень осторожен, чтобы не делать зависящие от системы вещи, он будет работать практически везде.

Джо
источник
1

Инерция.

Bash оказался самой легко доступной бесплатной оболочкой, когда начали появляться системы Linux (если хотите, GNU / Linux). Тот факт, что это из проекта GNU, не повредит.

Что касается того, почему это все еще оболочка по умолчанию, то никогда не было достаточно веских причин для ее изменения. Даже если какая-то другая оболочка лучше, есть преимущества наличия одинаковой оболочки входа по умолчанию в разных дистрибутивах, и было бы трудно заставить всех (Debian, Red Hat, Suse и т. Д.) Согласиться переключиться на что-то другое.

И в конце концов, это только по умолчанию. Любой пользователь может использовать chshдля изменения его или ее оболочки входа в систему. Нет необходимости менять настройки по умолчанию для всех.

Кит Томпсон
источник