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