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

8

Comment savoir si un script est écrit en bashou sh?

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

En fait, il existe de nombreuses distributions où /bin/shest bash (peut /bin/sh- être un lien vers /bin/bashces distributions), et non Bourne Shell. Donc, si j'essaie d'exécuter un script écrit en bash dans, par exemple, FreeBSD, le résultat n'est pas défini, car /bin/shdans FreeBSD est Bourne Shell, et non bash.

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

Y a-t-il des choses distinctes dans la syntaxe?

user1115057
la source
3
Voir Bashisms sur le wiki de Greg ...
jasonwryan

Réponses:

15

En fait, les lignes de shebang signifient quelque chose car certaines distributions comme Debian n'utilisent pas bashpour /bin/shmais dash.

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

checkbashismsdevrait être empaqueté par différentes distributions, pour Debian il est dans le devscriptspaquet - Fedora dans devscripts-minimal(il était auparavant rpmdevtools) et OpenSuSe dansrpmlint-mini

Ulrich Dangel
la source