Cómo averiguar si un script de shell está escrito en bash o sh

8

¿Cómo puedo saber si un guión está escrito basho sh?

La primera línea del script no es útil aquí, ya que en Linux, los scripts bash tienen esta línea: #!bin/sh

En realidad, hay muchas distribuciones donde /bin/shes bash (tal vez /bin/shes un enlace a /bin/bashesas distribuciones), y no Bourne Shell. Entonces, si trato de ejecutar un script que está escrito en bash en, por ejemplo, FreeBSD, el resultado no está definido, ya que /bin/shen FreeBSD es Bourne Shell, y no bash.

¿Hay alguna manera fácil de identificar si un script es bash o sh?

¿Hay algunas cosas distintivas en la sintaxis?

usuario1115057
fuente
3
Ver Bashisms en la Wiki de Greg ...
jasonwryan

Respuestas:

15

En realidad, las líneas shebang significan algo que algunas distribuciones como Debian no usan bashpara /bin/shpero dash.

La solución más simple para determinar si un script de shell es bash es usarlo checkbashism; consulte los man checkbashismsdetalles.

checkbashismsdebe estar empaquetado por diferentes distribuciones, para Debian está en el devscriptspaquete: Fedora en devscripts-minimal(solía estar en rpmdevtools) y OpenSuSe enrpmlint-mini

Ulrich Dangel
fuente