How can I find out whether a script is written in bash
or sh
?
The first line of the script is not helpful here, since on Linux, bash scripts have this line:
#!bin/sh
Actually, there are many distribution where /bin/sh
is bash (maybe /bin/sh
is a link to /bin/bash
in those distributions), and not Bourne Shell. So if I try to run a script that is written in bash in, for example, FreeBSD, the result is not defined, since /bin/sh
in FreeBSD is Bourne Shell, and not bash.
Is there are easy way to identify if a script is bash or sh?
Are there some distinctive things in syntax?
Best Answer
Actually the shebang lines means something as some distributions like Debian don't use
bash
for/bin/sh
butdash
.The simplest solution to determine if a shell script is bash is to use
checkbashism
- seeman checkbashisms
for details.checkbashisms
should be packaged by different distributions, for Debian it is in thedevscripts
package - Fedora indevscripts-minimal
(it used to be inrpmdevtools
) and OpenSuSe inrpmlint-mini