Como descobrir se um script de shell é escrito em bash ou sh

8

Como posso descobrir se um script está escrito em bash ou sh ?

A primeira linha do script não é útil aqui, pois no Linux, os scripts do bash têm essa linha: #!bin/sh

Na verdade, há muitas distribuições em que /bin/sh é bash (talvez /bin/sh seja um link para /bin/bash nessas distribuições) e não Bourne Shell. Então, se eu tentar rodar um script escrito em bash, por exemplo, FreeBSD, o resultado não está definido, pois /bin/sh no FreeBSD é Bourne Shell, e não bash.

Existe uma maneira fácil de identificar se um script é bash ou sh?

Existem algumas coisas distintas na sintaxe?

    
por user1115057 06.08.2012 / 03:08

1 resposta

15

Na verdade, as linhas shebang significam algo, já que algumas distribuições como o Debian não usam bash para /bin/sh mas dash .

A solução mais simples para determinar se um script de shell é bash é usar checkbashism - consulte man checkbashisms para detalhes.

checkbashisms deve ser empacotado por diferentes distribuições, para o Debian ele está no devscripts package - o Fedora em devscripts-minimal (costumava ser em rpmdevtools ) e o OpenSuSe em rpmlint-mini

    
por 06.08.2012 / 03:46