Większość powłok używanych w nowoczesnych środowiskach UNIX ma być zgodna ze specyfikacją sh POSIX. POSIX sh pochodzi z oryginalnej powłoki Korna (ksh88), która z kolei pochodzi z wcześniejszej powłoki Bourne'a, ale POSIX sh określa tylko niewielki podzbiór nawet funkcjonalności ksh88. W powłoce, która implementuje tylko minimalne wymagania, brakuje wielu funkcji wymaganych do pisania wszystkich oprócz najbardziej trywialnych skryptów w bezpieczny i rozsądny sposób. Na przykład zmienne lokalne i tablice są niestandardowymi dodatkami.
Dlatego pierwszym powodem jest rozszerzenie powłoki o dodatkowe funkcje. Różne muszle skupiają się na różnych rzeczach. Na przykład Zsh koncentruje się na zaawansowanych funkcjach interaktywnych, podczas gdy ksh93 (obecna „oryginalna” powłoka Korn) koncentruje się na zaawansowanych funkcjach programowania i wydajności. Nawet bardzo minimalne powłoki, takie jak Dash, dodają co najmniej kilka niestandardowych dodatków, takich jak zmienne lokalne.
Dodatkowe funkcje rzadko są szeroko interoperacyjne, jeśli w ogóle. Większość zestawów funkcji ksh88 jest dość dobrze interoperacyjnych, takich jak rozszerzona składnia globowania, ale w przypadku niestandardowych funkcji nie ma żadnych gwarancji i musisz naprawdę wiedzieć, co robisz, aby używać ich w przenośny sposób.
Drugim powodem jest dziedzictwo. Wciąż istnieje wiele zastrzeżonych uniksów, które używają starożytnych niestandardowych implementacji dla swojego / bin / sh. Do niedawna Solaris nadal korzystał z Bourne'a jako defuault i postanowił zachować powłokę Heirloom, zamiast ulepszyć ją do czegoś nowoczesnego. Systemy te zazwyczaj zawierają różne powłoki, na które można się przełączać, na przykład zmieniając zmienną PATH lub zmieniając shebangi w poszczególnych skryptach.
Podsumowując. Istnieje wiele powłok, często domyślnie:
- Dodatkowe funkcje, szczególnie w przypadku nieprzenośnych dodatków.
- Do obsługi starszych skryptów, które często nie są konserwowane.
- rozmiar / wydajność. Systemy osadzone często wymagają małych powłok, takich jak mksh lub busybox sh.
- Powody licencyjne. AT&T ksh było oprogramowaniem zastrzeżonym do około 2000 roku. To w dużej mierze dało początek wszystkim klonom podobnym do ksh, takim jak Zsh i Bash.
- Inne przyczyny historyczne. Choć dziś niezbyt popularne, podjęto radykalne próby przeprojektowania języka, takie jak scsh i es. Funkcja zastępowania procesów wielu powłok pierwotnie pochodzi z rc (z nieco inną składnią) i rozszerzenia nawiasów klamrowych z csh. Różne powłoki mają różne kombinacje takich funkcji, zwykle z pewnymi subtelnymi lub nie tak subtelnymi różnicami.