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

8

Como posso descobrir se um script está escrito bashou sh?

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

Na verdade, existem muitas distribuições onde o /bin/shbash (talvez /bin/shseja um link para /bin/bashessas distribuições), e não o Bourne Shell. Portanto, se eu tentar executar um script escrito em bash, por exemplo, no FreeBSD, o resultado não será definido, pois /bin/shno 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?

user1115057
fonte
3
Veja Bashisms no Wiki de Greg ...
jasonwryan

Respostas:

15

Na verdade, as linhas shebang significam algo que algumas distribuições como o Debian não usam bashpara /bin/shmas dash.

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

checkbashismsdeve ser empacotado por diferentes distribuições, pois o Debian está no devscriptspacote - o Fedora está devscripts-minimal(costumava estar rpmdevtools) e o OpenSuSe norpmlint-mini

Ulrich Dangel
fonte