Другие отмечают, что предпосылки вопроса о том, что оболочка Bourne Again является стандартной и вездесущей, совершенно неверны.
В дополнение к этому, есть действительно веские причины для использования чего-то другого, кроме оболочки Bourne Again, для интерпретации сценариев оболочки. Эти причины мотивировали в Ubuntu и большой проект Debian, в течение ряда лет, чтобы удалить bashisms и сделать так как многие из сценариев оболочки управляют инициализации системы (который был много сценариев оболочки с системой 5 rc
) и установки пакетов / использование удаления в Оболочка Debian Almquist вместо оболочки Bourne Again.
Проще говоря: оболочка Bourne Again, битком набитая интерактивными функциями, не является самым быстрым интерпретатором оболочки для POSIX-совместимого сценария оболочки. Поэтому, если кто-то может сделать свои сценарии оболочки POSIX-совместимыми, интерпретируя их с помощью более легкой программы, такой как оболочка Debian Almquist, ваша система будет работать лучше. (В конце концов, Debian пришлось внести небольшие коррективы в оболочку Almquist, чтобы добавить поддержку нескольких не-POSIX-конструкций оболочки, которые просто слишком глубоко и широко внедрены и слишком полезны, чтобы от них избавиться.)
Результатом всего этого стало значительное увеличение производительности начальной загрузки.
Итак, здесь нужно рассмотреть два различных класса оболочки:
- Оболочки со всеми яркими интерактивными функциями, которые настроены в качестве интерактивных оболочек для входа пользователей в базу данных учетных записей.
- Оболочки, которые быстро интерпретируют множество сценариев, которые используются в качестве интерпретаторов сценариев программами сценариев оболочки.
Обратите внимание, что говорить об этом как о «предпочтении /bin/sh
» слишком упрощенно. На самом деле у Debian было как минимум две цели:
Перед лицом администраторов, использующих оболочку Debian Almquist, оболочку Z (в режиме POSIX), оболочку Bourne Again (в режиме POSIX), оболочку MirBSD Korn и другие, поскольку /bin/sh
…
... сделать сценарии максимально переносимыми, чтобы переключение между /bin/sh
отображаемыми объектами не нарушало их; или же
… Создание непереносимых сценариев явно нацелено на правильную программу-интерпретатор , а не просто ожидает эту /bin/sh
карту к ней.
Было сделано, что оболочка Debian Almquist является отображением по умолчанию /bin/sh
вместо оболочки Bourne, так что те сценарии, которые были POSIX-совместимыми (или, точнее, совместимыми с политикой Debian), выполнялись быстрее.
И, конечно, как только кто-то входит в это, он может пойти намного дальше; такие как рассмотрение компромиссных эффективности подобных /bin/true
и /usr/bin/clear
быть сценарии оболочки или скомпилированных программ. Но это выходит за рамки этого ответа, к счастью. ☺
Все это, конечно, не является чем-то новым и даже специфичным для Unix. Еще на рубеже веков я написал и опубликовал интерпретатор командной строки, который выпускался как в «интерактивном», так и в «неинтерактивном» виде, объясняя именно это разделение в документе и отмечая разницу между переменными COMSPEC
и OS2_SHELL
средой. Точно так же обсуждение удаления ошибок в System V Debian rc
и сценариях установки / удаления пакетов восходит к 1990-м годам.
дальнейшее чтение
/bin/sh
если вы не используете определенныеbash
функции. Однажды вам может понадобиться использовать один из ваших сценариев в системе, в которой он не установлен (удаленный сервер, встроенный компьютер ...)