So finden Sie heraus, ob ein Shell-Skript in bash oder sh geschrieben ist

8

Wie kann ich herausfinden, ob ein Skript in bashoder geschrieben ist sh?

Die erste Zeile des Skripts ist hier nicht hilfreich, da Bash-Skripte unter Linux folgende Zeile haben: #!bin/sh

Tatsächlich gibt es viele Distributionen, bei denen /bin/shes sich um Bash handelt (möglicherweise /bin/shist dies ein Link zu /bin/bashdiesen Distributionen), und nicht bei Bourne Shell. Wenn ich also versuche, ein Skript auszuführen, das in Bash beispielsweise in FreeBSD geschrieben ist, ist das Ergebnis nicht definiert, da /bin/shin FreeBSD Bourne Shell und nicht Bash ist.

Gibt es eine einfache Möglichkeit, festzustellen, ob es sich bei einem Skript um Bash oder Sh handelt?

Gibt es einige Besonderheiten in der Syntax?

user1115057
quelle
3
Siehe Bashisms in Gregs Wiki ...
Jasonwryan

Antworten:

15

Eigentlich bedeuten die Shebang-Zeilen etwas, da einige Distributionen wie Debian nicht bashfür verwenden, /bin/shaber dash.

Die einfachste Lösung, um festzustellen, ob ein Shell-Skript Bash ist, ist die Verwendung checkbashism- siehe man checkbashismsDetails.

checkbashismssollte von verschiedenen Distributionen gepackt werden , für Debian ist es im devscriptsPaket enthalten - Fedora in devscripts-minimal(es war früher in rpmdevtools) und OpenSuSe inrpmlint-mini

Ulrich Dangel
quelle