如何找出shell脚本是用bash还是sh编写的


8

如何确定脚本是用bash还是写的sh

脚本的第一行在这里没有帮助,因为在Linux上,bash脚本具有以下行: #!bin/sh

实际上,有很多发行版/bin/sh是bash(也许/bin/sh/bin/bash这些发行版中的链接),而不是Bourne Shell。因此,如果我尝试在FreeBSD中运行以bash编写的脚本,则结果未定义,因为/bin/sh在FreeBSD中是Bourne Shell,而不是bash。

有没有简单的方法可以识别脚本是bash还是sh?

语法中有一些与众不同的东西吗?


3
在Greg的Wiki上查看Bashisms ...
jasonwryan 2012年

Answers:


15

实际上shebang线意味着某种东西,如Debian之类的一些发行品并不bash用于/bin/sh而是dash

确定shell脚本是否为bash的最简单解决方案是使用checkbashism- man checkbashisms有关详细信息,请参见。

checkbashisms应该由不同的发行版打包,对于Debian,它位于devscripts软件包devscripts-minimalrpmdevtools-Fedora位于(以前位于中)和OpenSuSe位于rpmlint-mini

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.