Comment savoir si un script shell est écrit en bash ou sh

Comment puis-je savoir si un script est écrit en bash ou sh ?

La première ligne du script n'est pas utile ici, puisque sous Linux, les scripts bash ont cette ligne: #!bin/sh

En fait, il y a beaucoup de dissortingbution où /bin/sh est bash (peut /bin/sh être /bin/sh est un lien vers /bin/bash dans ces dissortingbutions), et non Bourne Shell. Donc, si j'essaie d'exécuter un script écrit en bash, par exemple, FreeBSD, le résultat n'est pas défini, puisque /bin/sh dans FreeBSD est Bourne Shell, et non bash.

Existe-t-il un moyen simple d'identifier si un script est bash ou sh?

Y a-t-il des éléments distinctifs dans la syntaxe?

En fait, les lignes shebang signifient quelque chose comme certaines dissortingbutions comme Debian n'utilisent pas bash pour /bin/sh mais dash .

La solution la plus simple pour déterminer si un script shell est bash est d'utiliser checkbashism – voir man checkbashisms pour plus de détails.

checkbashisms devrait être empackageé par différentes dissortingbutions, pour Debian c'est dans le packageage devscripts – Fedora dans devscripts-minimal (il était dans rpmdevtools ) et OpenSuSe dans rpmlint-mini