Інші зазначають, що суперечки питання про те, що оболонка 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 Shell (в режимі POSIX), оболонку Bourne Again (в режимі POSIX), оболонку MirBSD Korn та інші, тому /bin/sh
що було…
… Зробити сценарії максимально портативними, щоб переключення того, що /bin/sh
відображено, не порушувало речі; або
… Створення не портативних сценаріїв явно орієнтується на правильну програму інтерпретатора , а не просто очікувати на цю /bin/sh
карту.
Там робилася оболонка Debian Almquist за замовчуванням для заміни оболонки /bin/sh
Bourne, щоб ті сценарії, які відповідають POSIX (або, правильніше, відповідно до Посібника Debian Policy), бігали швидше.
І звичайно, як тільки хтось в цьому потрапить, можна зробити це набагато далі; таких як розгляд компромісних ефективності подібних /bin/true
і /usr/bin/clear
бути сценаріїв оболонки або скомпільовані програми. Але це виходить за рамки цієї відповіді, на щастя. ☺
Ніщо з цього не є дуже новим, навіть навіть для Unix, звичайно. Ще до початку межі століття я написав і опублікував інтерпретатор командного рядка, який входив як в "інтерактивний", так і в "неінтерактивний" смаки, пояснюючи цей самий поділ в його документі і зазначаючи різницю між змінними COMSPEC
і OS2_SHELL
середовищем. Аналогічно, обговорення видалення башизмів у Debian System V rc
та сценаріїв встановлення / видалення пакунків починається з 1990-х.
Подальше читання
/bin/sh
якщо ви не використовуєте конкретніbash
функції. Одного разу вам довелося б використовувати один зі своїх скриптів у системі, на якій він не встановлений (віддалений сервер, вбудований комп'ютер ...)