Unter sh ist einerseits eine durch POSIX genormte ideelle Shell mit Befehlszeileninterpreter zu verstehen.

Andererseits meint sh eine ausführbare Datei in aktuellen Unix- und ähnlichen Betriebsystemen, deren Aufruf eine reelle POSIX-konforme/-kompatible Shell startet. Diese Datei liegt in der Regel unter /bin/sh. Oftmals ist dies eine symbolische Verknüpfung zu der Programmdatei oder eine Kopie der Programmdatei einer Shell wie Bash (/bin/bash), Dash (/bin/dash), Kornshell (/bin/ksh), Zsh (/bin/zsh) etc. Bei FreeBSD hingegen ist sh unter /bin/sh tatsächlich eine POSIX-kompatible Shell mit dem schlichten Namen Shell.[1]

Lediglich in einem historischen Kontext ist mit sh konkret die alte Bourne-Shell aus AT&T UNIX V7 gemeint, die unter /bin/sh ihren Platz hatte. Die Bourne-Shell ist nicht POSIX-kompatibel da der Standard erst viel später entstand. POSIX ist allerdings kompatibel zur Bourne-Shell da für die Entwicklung des Standards die Kornshell als Grundlage herangezogen wurde, welche ebenfalls bei AT&T entstand und eine abwärtskompatible Weiterentwicklung der Bourne-Shell mit C-Shell-Elementen darstellt.


POSIX gibt keinen Pfad für die ausführbare Datei sh vor.[2] Üblicherweise befindet sie sich unter /bin/sh.


Siehe auch Bearbeiten

  1. https://www.freebsd.org/doc/de_DE.ISO8859-1/articles/linux-users/shells.html https://www.freebsd.org/cgi/man.cgi?query=sh&sektion=1&manpath=freebsd-release-ports
  2. https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html