Die Open Group Base-Spezifikationen, Ausgabe 7IEEE Std 1003.1 ™ -2008, Ausgabe 2016, oder kurz "The POSIX Standard", ist der Standard, der die von einem Unix-System bereitgestellten Schnittstellen und Dienstprogramme definiert. Dazu gehören die Befehlszeilen-Shell-Sprache und -Tools (siehe "Shell & Utilities" im Hauptindex auf der oben verlinkten Seite).
Soweit ich weiß, gibt es keine Shell, die implementiert genau , was vom Standard festgelegt wird, aber sowohl bash
als auch ksh93
leisten einen ziemlich guten Beitrag zur Einhaltung des Standards zusammen mit ihren eigenen, manchmal widersprüchlichen Erweiterungen. Insbesondere die ksh93
-Shell hatte einen großen Einfluss auf die frühere Entwicklung der POSIX-Shell-Spezifikation, aber zukünftige POSIX-Spezifikationen können mehr von bash
ausleihen Aufgrund seiner weit verbreiteten Verwendung unter Linux.
Die bash
-Shell ist auf Linux-Systemen nahezu allgegenwärtig und kann auch auf allen anderen Unices installiert werden. ksh93
ist auch für die meisten Unices verfügbar, wird jedoch normalerweise nicht standardmäßig unter Linux installiert. ksh93
ist standardmäßig unter mindestens macOS (als ksh
) und Solaris verfügbar.
Wenn Sie beim Schreiben eines Shell-Skripts (welches) über die Portabilität besorgt sind Ist IMHO eine gute Sache, über die Sie sich Sorgen machen sollten), sollten Sie sicherstellen, dass Sie nur die POSIX-Dienstprogramme und ihre POSIX-Befehlszeilenflags sowie nur die POSIX-Shell-Syntax verwenden. Sie sollten dann sicherstellen, dass Ihr Skript von / bin / sh
ausgeführt wird, einer Shell, die die POSIX-Spezifikation versteht. / bin / sh
wird häufig durch bash
implementiert, das im "POSIX-Modus" ausgeführt wird, es kann sich aber auch um dash
, ash handeln code> oder pdksh
(oder etwas anderes), je nachdem, welches Unix Sie verwenden.
Für einen Linux-Benutzer ist das Schwierigste beim Schreiben eines tragbaren Skripts häufig nicht die Shell an sich, sondern die Vielzahl von nicht standardmäßigen Befehlszeilenflags, die von der GNU-Implementierung der vielen Shell-Dienstprogramme bereitgestellt werden. Die GNU-Coreutils (grundlegende Shell-Dienstprogramme) können jedoch wie bash
auf allen Unices installiert werden.
Beachten Sie auch, dass bash
unter POSIX ausgeführt wird Der Modus (entweder beim Aufrufen als / bin / sh
oder mit dem Befehlszeilenflag --posix
) ist hinsichtlich seiner POSIX-Konformität und nicht streng akzeptiert möglicherweise einige Syntaxerweiterungen des POSIX-Standards.