In Anbetracht der Tatsache, dass POSIX einem gemeinsamen Standard aller Unices am nächsten kommt, möchte ich wissen, ob es eine Shell gibt, die dies ausschließlich unterstützt. Während die meisten modernen Shells Unterstützung für POSIX bieten (und POSIX-konforme Skripte problemlos ausführen), sind sie nicht gut darin, auf nicht konforme Funktionen hinzuweisen.
Gibt es eine Shell, die POSIX und nur POSIX so implementiert, dass sie einen Fehler für jede nicht konforme Funktion ausgibt?
BEARBEITEN Ich möchte klarstellen, dass ich nicht nach allgemeinen Tipps zum Schreiben von portablen Shell-Skripten frage. Die in den Kommentaren erwähnte verwandte Frage deckte dies bereits ab. Ich dachte an diese Frage, als ich herausfand, dass bash
hat einen --posix
Option, aber nur um festzustellen, dass sie nur einige Initialisierungsverhalten betrifft, was nicht genau das ist, wonach ich suche.
Akzeptierte Antwort:
Leider ist „portabel“ normalerweise eine stärkere Anforderung als „POSIX-konform“ für Shell-Skripte. Das heißt, etwas zu schreiben, das auf jeder POSIX-Shell läuft, ist nicht allzu schwierig, aber es auf jeder realen Shell zum Laufen zu bringen, ist schwieriger.
Sie können damit beginnen, jede Shell in Ihrem Paketmanager zu installieren, insbesondere posh
von debian klingt wie das, was Sie wollen (Richtlinienkonforme Ordinary SHell). Die Debian-Richtlinie ist POSIX mit einigen Ausnahmen (echo -n
angegeben, local
…).
Darüber hinaus muss das Testen jedoch einige Shells (insbesondere /bin/sh) auf einer Reihe von Plattformen abdecken. Ich teste auf Solaris (/bin/sh und xpg4/sh) und BSD. AIX und HP-UX sind sehr kompatibel und verursachen keine Probleme. bash ist eine kleine Welt für sich.
Ich würde den Autoconf-Leitfaden für die tragbare Shell empfehlen, der absolut brillant ist und viel Zeit spart. Große Teile davon sind veraltet, aber das ist in Ordnung; Überspringen Sie einfach TruUnix und Ultrix und so weiter, wenn es Ihnen egal ist!