Antworten:
Nein, nicht alle für Bash bestimmten Skripte funktionieren mit Bindestrich. Eine Reihe von 'Bashism' funktioniert nicht im Bindestrich, wie z. B. der C-Stil für Schleifen und die Doppelklammer-Vergleichsoperatoren. Wenn Sie über eine Reihe von Bash-Skripten verfügen, die Sie für Dash verwenden möchten, können Sie Checkbashisms verwenden . Dieses Tool überprüft Ihr Skript auf Nur-Bash-Funktionen, die im Bindestrich wahrscheinlich nicht funktionieren.
#!/bin/sh
aber nicht funktioniert in /bin/sh
( zum Beispiel , weil es wurde geschrieben und läuft nur in bash
) sollte in Betracht gezogen wird gebrochen . Der einfachste Weg, solche Skripte zu reparieren, besteht darin, den Shebang durch #!/bin/bash
(oder #!/usr/bin/env bash
) zu ersetzen .
bash
Funktionen abhängt , als solches und nicht als deklarieren sollten sh
. Andernfalls funktioniert es einfach nicht auf einem System, mit dem keine sh
Verbindung besteht bash
. Das Praktische ist, Ihre Skripte richtig zu schreiben und zu zeigen, damit sie tatsächlich funktionieren .
Nicht einmal sh-Skripte sind mit dash kompatibel. Pkgsrcs Bootstrap, zum Beispiel.
dash -n
hat beim Ausführen von Bootstrap keine Fehler ergeben, aber das ist der naivste Test.
dash
die nicht unterstützt wird. Möglicherweise mehr Dinge, aber die Liste ist sehr klein.
local
#!/bin/bash
und dass seine Skripte nicht Posix-konform sind und daher angegeben werden müssen, um mit dem richtigen Interpreter ausgeführt zu werden