Sind dash, ash und sh script 100% kompatibel?

16

Ich wollte wissen, ob für dash, ash und sh geschriebene Skripte zu 100% kompatibel sind.

Gibt es zusätzliche Funktionen zum Bindestrich oder Aschen oder zum Ändern der Syntax?

Nach allem, was ich gehört habe, ist Asche ein direkter Nachkomme von sh.

user1115057
quelle
Asche ist eine gestreifte Form der Bash
Joe
4
Quelle? Ich habe nichts gesehen, was besagt, dass ash mit bash zusammenhängt
user1115057
Warum sollten die Leute nicht einfach Patches einreichen, anstatt alle Arten von Muscheln zu erschaffen, die mich die ganze Zeit nerven? Wenn Sie es wirklich wissen wollen, lesen Sie das Handbuch, zBman ash
Daisy
2
Richtig, es ist kein Abkömmling von bash. Es wäre genauer zu sagen, dass sie von sh (der ursprünglichen Bourne-Shell) abstammen, aber das ist auch nicht ganz richtig.
Zlatko
Mit dem Dienstprogramm können Sie checkbashismstesten, ob Ihr Skript POSIX-kompatibel ist.
donothingsuccessfully

Antworten:

18

Die kurze Antwort ist nein, sie sind nicht 100% kompatibel.

Aber die meisten Shells sind ziemlich nah am Basic, so dass man nur selten auf Inkonsistenzen stößt. Tatsächlich unterscheiden sich die meisten Shells nicht wesentlich durch die hinzugefügte Syntax, sondern durch einige zusätzliche Funktionen wie die Tab-Vervollständigung und ähnliches.

Ist auch dasheine Art Abkömmling von ash- oder Portierung von BSD auf Linux, um genau zu sein. Und alle von ihnen sollten Nachkommen oder verschiedene Implementierungen von sein sh. In der Tat shist auf den meisten Systemen nur einen symbolischen Link auf bash, dashoder etwas anderes. Entscheidend ist die POSIX-Konformität - und wenn Sie Skripte gemäß den Standards schreiben, treten keine Probleme auf.

Der Unterschied zwischen diesen Shells liegt in der Optimierung und Leistung. Sie sind dann weniger bashfunktionsreich, aber sie sind völlig legitime Muscheln. Bash ist reich an Funktionen für interaktives Arbeiten, benötigt jedoch beispielsweise mehr Speicher.

Zlatko
quelle
Aber für die Verwendung von Skripten sind sie kompatibel?
user1115057
Und was die POSIX-Konformität
anbelangt
Sie sollten miteinander kompatibel sein, wenn Sie keine dunklen Funktionen verwenden. Wenn Sie jedoch ein Bash-Skript verwenden, treten möglicherweise weitere Probleme auf.
Zlatko
niemals beabsichtigt, bash mit sh oder ash oder dash zu verwenden. Was sind diese obskuren Merkmale?
user1115057
1
Viele der neueren Funktionen von bash sind Ergänzungen über POSIX, so dass es immer wahrscheinlicher wird, dass Sie nicht portierbaren Code schreiben, wenn Sie sie verwenden. IIRC sogar das Konstrukt ist nicht in sh. Beachten Sie auch, dass, wenn Sie kein reines Shell-Skript schreiben, auch Unterschiede in den Werkzeugen ins Spiel kommen (verschiedene Versionen von sed, grep, awk ...).
Lynxlynxlynx
1

Es sollte erwähnt werden, dass auf einigen Systemen, insbesondere Debian, / bin / ash nicht verfügbar ist:

$ type ash dash
bash: type: ash: not found
dash is /bin/dash
Steven Penny
quelle
2
Sie könnten beschäftigt Boxasche haben.
muru