Die Aussage in Ihrer Frage ist falsch. Solaris bis zu Version 10 ist das Erbe wahr Bourne - Shell wie die Bereitstellung /bin/sh
. Dies wurde getan, um die Kompatibilität mit alten Skripten, die mit einer anderen Shell fehlschlagen könnten, nicht zu beeinträchtigen. Diese Wahl war jedoch ansonsten sehr frustrierend.
Die meisten, wenn nicht alle verbleibenden Unix- und Unix-ähnlichen Releases, einschließlich Solaris 11, bieten eine POSIX-kompatible Shell, /bin/sh
da POSIX den sh
Befehl zum Starten einer POSIX-Shell fordert, nicht die nicht kompatible ältere Bourne-Shell. /bin/sh
ist allgemein :
ksh88
oder ksh93
auf den kommerziellen Unix-Implementierungen
- eine modifizierte
bash
am OS/X
(obwohl es früher war zsh
)
- ein
ash
oder pdksh
Derivat auf andereBSDs
bash
oder dash
auf Gnu / Linux-Distributionen.
Es ist nicht unbedingt eine Verknüpfung, sondern kann auf vielen Systemen, aber unter Gnu / Linux, eine echte ausführbare Datei sein.
Interessanterweise ist es nicht der Mangel an Funktionen, der Distributionsentwickler dazu veranlasst, etwas anderes als die alte Bourne-Shell zu installieren, /bin/sh
sondern der Wunsch, so POSIX-konform wie möglich zu sein, dh sich wie eine zu verhalten Unix wie OS. Die Tatsache, dass die POSIX-Shell mehr Funktionen bietet als die herkömmliche Bourne-Shell, ist nur ein Nebeneffekt dieses Standard-Compliance-Ziels.
Es ist auch eine Tatsache, dass sich einige Shells, insbesondere bash
wenn sie aufgerufen werden sh
, anders verhalten . Dadurch werden hauptsächlich Features aus der Shell entfernt, nicht umgekehrt.