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?


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.