Welche Shells unterstützen die Erweiterung von Dollar-Klammern nicht und erfordern Backticks?

8

Die moderne Empfehlung lautet:

$(...)

anstelle des älteren:

`...`

hauptsächlich zur besseren Lesbarkeit und um die Notwendigkeit zu vermeiden, beim Verschachteln zu entkommen.

Welche Schalen unterstützen die $(...)Form nicht und werden heute noch verwendet?

joeytwiddle
quelle
1
Lesen Sie Have Backticks (dh cmd) in * sh Schalen veraltet? und Sie werden die Antwort finden.
John1024
Darin heißt es: "Der einzige Grund für die Verwendung von Backticks ist die Kompatibilität mit einer echten Bourne-Shell (wie Heirloom)."
Joeytwiddle
1
Ein wichtiger Punkt ist, dass alle nach den 90ern gewarteten Unix-ähnlichen Systeme einen Befehl haben, shder in der richtigen Umgebung unterstützt wird $(...).
Stéphane Chazelas

Antworten:

8

Die ursprüngliche Bourne-Shell, csh oder tcsh unterstützen $()und erfordern keine `` Befehlsersetzung.

Die Bourne-Shell wird unter vielen UNIX-basierten Betriebssystemen nicht mehr als Standard-Shell (/ bin / sh) verwendet. Diese Shells werden jedoch weiterhin von den Betriebssystemherstellern bereitgestellt, da sie aus historischen Gründen weiterhin verwendet werden.

Sowohl AIX als auch HP-UX haben / bin / sh als POSIX-kompatible Shell. Die Bourne-Shell ist unter AIX weiterhin als 'bsh' (jedoch 1995 mit AIX 4.1 veraltet ) und HP-UX 11.11 '/ usr / old / bin / sh' verfügbar (Bourne wurde aus 11.23 entfernt). Ich bin nicht sicher, wann der Wechsel vorgenommen wurde, aber es war vor vielen Jahren.

Dunkles Herz
quelle
5

Solaris 10 und frühere /bin/shVersionen werden nicht unterstützt $().

Es wird heute noch verwendet, da Solaris 10 noch verwendet wird. Sun wollte es nicht durch eine standardkonforme Version (bis einschließlich Solaris 10) ersetzen - und weil die meisten Benutzer dies /bin/shals Standard-Shell betrachten und nicht wissen, wie um ein Skript mit einer POSIX-konformen Shell portabel auszuführen .

Suns Motivation, sich nicht zu ändern, /bin/shbestand darin, zu vermeiden, dass vorhandene Shell-Skripte beschädigt werden, die auf dem nicht konformen Verhalten beruhen.

maxschlepzig
quelle
2
@ Cuonglm, ja, ich habe es gerade getestet und kann es bestätigen. Hätte gedacht, dass eher Hurd veröffentlicht wird als Sun / Oracle seine Richtlinien ändert am /bin/sh...
maxschlepzig