Чому bash стандарт для Linux?


19

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

Я намагаюся зрозуміти, чи є це якийсь історичний залишок, який ніхто не хоче змінити, чи є якісь вагомі причини, які роблять удар першим вибором?


19
Більшість комп'ютерів продаються з встановленою MS Windows, хоча є й інші, мабуть, кращі ОС.
choroba

Баш простий. Зазвичай він може робити все, що користувач хоче. Ви можете легко переключити його. Це не приємно мати scsh за замовчуванням.
кн

4
Bash - це реалізація стандарту UNIX для OSS /bin/sh, яка за замовчуванням оболонка для 'звичайних' UNIX-ес ...
Ян Марек

Я знаю, що це посилання на вікі, але воно відповідає на ваше запитання глибоко: Яка одна оболонка, ніж інша en.wikipedia.org/wiki/Unix_shell
whoami

6
Будь ласка, визначте (можливо) краще . Я думаю, що bashце найкраща оболонка, тому що я це добре знаю, і вона є скрізь, робить все, що мені потрібно стисло і відносно легко, легко читається, і люди можуть дещо зрозуміти, не знаючи, як створювати bash-сценарії. Що ще потрібно від шкаралупи? Якщо ви хочете багато функцій програмування, ви використовуєте оболонку неправильно.
nicerobot

Відповіді:


18

Коротка відповідь полягає в тому, що Linux справді GNU / Linux. Тільки ядро ​​є Linux, але базова колекція утиліт, що надають середовище схоже на Unix, надається GNU, а оболонка GNU - це біс.
Як я вже сказав, це коротка відповідь;)

відредаговано, щоб додати додатковий коментар ...
Дозвольте вказати префікс, сказавши, що я не історик Unix, тому я можу відповісти лише на ІМХО

Кілька пунктів, перш за все башти - це кухонна мийка раковин, як Emacs для редакторів.
На той момент, коли вийшов bash, не було вільних реалізацій ksh, tcsh - це безкоштовна заміна csh, але у Стеллмана була скарга на csh для програмування оболонок.
Як інтерактивний баш оболонки мав відмінне згадування історії / команд, а також збереження історії від сеансу до сеансу. Це було падінням заміни на sh, bsh, ksh для програмування оболонок і зроблено для гідної інтерактивної оболонки.
Як сніжний ком, котячись у гору, баш набирав обертів і розмірів.

Так, є десятки інших снарядів; снаряди, які краще підходять для індивідуальних цілей або смаку, але для одного навколо башти оболонки справляють гідну роботу і вже багато років на це дивляться.


Я розумію. Однак більшість дистрибутивів включає багато інших програм, що не належать до GNU. Мені здається, що bash використовується лише тому, що він використовується, як і choroba, коментуючи Windows, що є домінуючою ОС. Однак протягом десятиліть Windows мала кращу апаратну підтримку (драйвери), що ускладнювало перехід на інші ОС. Я не бачу, яку унікальну функцію пропонує Bash, щоб запобігти переключенню користувачів?
Мілан Бабушков

+1 і хороший @bdowning за коротку і просту відповідь :-)
Nikhil Mulley

2
@ MilanBabuškov Bash потрібно встановити, оскільки занадто багато сценаріїв, які використовують функції, характерні для bash. Після того, як ви почнете з цього припущення, ви повинні виправдати додаткові оболонки. Dash включився в distos на зразок Ubuntu як частина плану скорочення часу завантаження. Зважаючи на те, що bash є "достатньо хорошим" як інтерактивна оболонка, жодна інша оболонка ще не надала достатньо сильного аргументу, щоб бути частиною завантаження пакету за замовчуванням.
ssokolow

12

У Bash є кілька потенційних конкурентів:

  • Zsh має більш просунуті інтерактивні засоби, але кілька химерностей, коли справа стосується сценаріїв (тим більше зараз, ніж назад у дні). На початку до середини 1990-х, коли Linux був у зародковому стані, zsh був практично невідомим.
  • Ksh був фактичним стандартом для комерційних об'єднань з середини 1980-х, але це було власницьким програмним забезпеченням до 2000 року, тому не є опцією для Linux. Також ksh мав можливості випуску командного рядка subpar порівняно з bash.
  • Pdksh , вільний клон ksh, був би варіантом, але він був недостатньо відомий і мав погані можливості редагування командного рядка. (Pdksh - це вже не дуже активний проект, хоча він все ще використовується в деяких BSD, тепер, коли ATT ksh є безкоштовним.)
  • Деякі дистрибутиви встановлюють варіант золи як /bin/sh. Зола (під якою я маю на увазі будь-яку з сипучих сімейств оболонок під назвою зола) розроблена таким чином, щоб вона була невеликою і швидкою, без інтерактивних функцій (це лише для редагування сценаріїв). Відродження золи відносно недавно; у 90-х роках існуючих варіантів бракувало багато особливостей.
  • Tcsh був найсучаснішою інтерактивною оболонкою, поки не з'явився zsh, але він несумісний з sh і не дуже хороший з сценарієм .

Крім того, bash є офіційною оболонкою GNU , а системи Linux справді є GNU / Linux : багато основних програм походять від GNU, навіть якщо найвідоміша частина, ядро ​​Linux, не має. У той час, коли він став фактичним стандартом, баш був добре відомий, мав офіційний статус і мав гідний набір функцій.


Як я розумію, стандарт POSIX визначає необхідні функції для оболонки Bourne, at / bin / sh, а більшість дистрибутивів Linux залежать від скриптів оболонки, написаних для використання оболонки Bourne. BASH є базовою вдосконаленою версією оболонки Bourne, і / bin / sh насправді є посиланням на / bin / bash, яке при виконанні працює лише з функціями оболонки Bourne.
bgvaughan

@bgvaughan Деякі дистрибутивні судна, як /bin/shінші, посилають золу. Наприклад, Ubuntu's /bin/shбув dashдеякий час (вилка золи, яку підтримує Debian). У Bash більше функцій, зола менша і швидша. Обидва вони сумісні з POSIX (або принаймні досить сумісні на практиці).
Жил 'ТАК - перестань бути злим'

4

Найпростіша відповідь? Тому що щось "повинно бути" за замовчуванням. Найрозумніший за замовчуванням - той, з яким більшість користувачів вже задоволені. З цього приводу Баш - хороший вибір. Кожен має свободу вибирати, хто найкращий у своєму світі. Більшість вирішить використовувати типовий засіб, якщо він завжди робив те, що їм потрібно.


3

Починаючи з DOS (із встановленим doskey), я дійсно пропустив функцію згадати останні команди, просто перемістивши курсор вгору / вниз. BASH був IMO першою оболонкою, яка реалізувала це на * nix.

Тож, напевно, більшість хлопців з того покоління і далі сподобалась баш.


Хоча не використовував комп’ютер до 1990-х років, я вважав, що tcshце перша оболонка * nix, яка використовувала клавіші зі стрілками для навігації вперед та назад по історії оболонки.
Ентоні Г - справедливість для Моніки

1

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

Як вказувалося в інших відповідях і у вашому запитанні, є багато інших оболонок (я чую багато хороших справ про zsh, але не пробував цього), але вони відрізняються залежно від синтаксису, а іноді й команд, що використовуються щоб зробити справи. Якщо я просто хочу щось зробити, баш досить складний, не потребуючи адаптації до іншої оболонки.

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


1

Інертність.

Bash виявився найбільш легко доступною безкоштовною оболонкою, коли Linux (GNU / Linux, якщо ви віддаєте перевагу) почали з'являтися системи. Те, що це від проекту GNU, не завадило.

Щодо того, чому це все ще оболонка за замовчуванням, ніколи не було достатньо вагомих причин її змінити. Навіть якщо якась інша оболонка краще, є однакові оболонки для входу за замовчуванням у різних дистрибутивах, і важко буде змусити всіх (Debian, Red Hat, Suse тощо) погодитися перейти на щось інше.

Зрештою, це лише дефолт. Будь-який користувач може використовувати chshдля зміни своєї оболонки для входу. Не потрібно змінювати типовий стан для всіх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.