Більшість оболонок, які використовуються в сучасних середовищах UNIX, повинні відповідати специфікації POSIX sh. POSIX sh походить від оригінальної оболонки Korn (ksh88), яка, в свою чергу, походить від попередньої оболонки Bourne, але POSIX sh лише визначає невеликий підмножина навіть функціональності ksh88. У оболонці, яка реалізує лише мінімальну вимогу, бракує багатьох функцій, необхідних для написання всіх, крім самих тривіальних сценаріїв, безпечним та розумним способом. Наприклад, локальні змінні та масиви - це нестандартні допоміжні елементи.
Тому перша причина - це розширення оболонки з додатковими функціями. Різні оболонки вирішують зосередитись на різних речах. Наприклад, Zsh зосереджується на вдосконалених інтерактивних функціях, тоді як ksh93 (поточна "оригінальна" оболонка korn) зосереджується на потужних програмуючих функціях та продуктивності. Навіть дуже мінімальні оболонки, такі як Dash, додають принаймні кілька нестандартних додатків, як локальні змінні.
Додаткові особливості рідко є взаємодіючими, якщо вони взагалі є. Більшість наборів функцій ksh88 досить добре взаємодіє, наприклад, синтаксис розширеного глобусу, але з нестандартними функціями гарантій немає, і ви дійсно повинні знати, що ви робите, щоб користуватися ними портативно.
Друга причина - спадщина. Є ще багато фірмових Unixes, які використовують старі нестандартні реалізації для їх / bin / sh. До недавнього часу Соларіс все ще використовував Борна в якості свого спаду і вирішив підтримувати оболонку Heirloom, а не модернізувати щось сучасне. Ці системи зазвичай постачаються з різними оболонками, на які можна перейти, наприклад, змінивши змінну PATH або змінивши шебаги в окремих сценаріях.
Отже, підсумовуючи. Є кілька оболонок, часто за замовчуванням:
- Для додаткових функцій, особливо для роботи з портативними додатками.
- Для обробки застарілих сценаріїв, які часто не підтримуються.
- розмір / продуктивність. Вбудовані системи часто вимагають невеликих оболонок, таких як mksh або busybox sh.
- Причини ліцензування. AT&T ksh було власником програмного забезпечення приблизно до 2000 року. Це багато в чому породило всіх ksh-подібних клонів, таких як Zsh та Bash.
- Інші історичні причини. Незважаючи на те, що сьогодні це не дуже популярно, були радикальні спроби переробити мову, наприклад, scsh та es. Особливість процесу заміщення багатьох оболонок спочатку походить від rc (з дещо іншим синтаксисом) та розширення дужок із csh. Різні оболонки мають різні комбінації таких особливостей, як правило, з деякими тонкими або не настільки тонкими відмінностями.