Stwierdzenie w twoim pytaniu jest nieprawidłowe. Solaris do wersji 10 jest zapewnienie prawdziwej starszej powłoki Bourne jako /bin/sh
. Zrobiono to, aby nie naruszać kompatybilności ze starymi skryptami, które mogą zawieść z inną powłoką. Ten wybór był jednak bardzo frustrujący.
Większość, jeśli nie wszystkie pozostałe wydania Uniksa i Unixa, w tym Solaris 11, zapewniają powłokę zgodną z /bin/sh
POSIX, ponieważ POSIX nakazuje sh
polecenie uruchomienia powłoki POSIX, a nie starszej powłoki Bourne, która nie jest zgodna. /bin/sh
jest ogólnie:
ksh88
lub ksh93
w komercyjnych implementacjach Uniksa
- zmodyfikowany
bash
na OS/X
(choć kiedyś zsh
)
ash
lub pdksh
pochodną w innychBSDs
bash
lub dash
w dystrybucjach Gnu / Linux.
Niekoniecznie jest to łącze, ale może być prawdziwym plikiem wykonywalnym na wielu systemach oprócz Gnu / Linuxes.
Co ciekawe, pomimo tego, co stanowi najbardziej pozytywną odpowiedź na twoje pytanie, to nie brak funkcji skłania deweloperów dystrybucji do zainstalowania czegoś innego niż starsza powłoka Bourne'a, /bin/sh
ale chęć bycia jak najbardziej zgodnym z POSIX, tj. Zachowywania się jak Uniksowy system operacyjny. Fakt, że powłoka POSIX ma więcej funkcji niż starsza powłoka Bourne, jest tylko efektem ubocznym tego standardowego celu zgodności.
Jest również faktem, że niektóre powłoki bash
zachowują się inaczej, gdy są wywoływane sh
, a to w większości usuwa funkcje z powłoki, a nie na odwrót.