Comment savoir si un script est écrit en bash
ou 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/sh
est bash (peut /bin/sh
- être un lien vers /bin/bash
ces 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/sh
dans 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?
bash
shell
shell-script
user1115057
la source
la source
Réponses:
En fait, les lignes de shebang signifient quelque chose car certaines distributions comme Debian n'utilisent pas
bash
pour/bin/sh
maisdash
.La solution la plus simple pour déterminer si un script shell est bash est d'utiliser
checkbashism
- voirman checkbashisms
pour plus de détails.checkbashisms
devrait être empaqueté par différentes distributions, pour Debian il est dans ledevscripts
paquet - Fedora dansdevscripts-minimal
(il était auparavantrpmdevtools
) et OpenSuSe dansrpmlint-mini
la source