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?


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.