如何判断shell脚本是用bash还是sh编写的

如何判断shell脚本是用bash还是sh编写的

如何查明脚本是否是用bashor编写的sh

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

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

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

语法上有什么独特之处吗?

答案1

实际上,shebang 行的含义是某些发行版(例如 Debian)不bash使用/bin/shbut dash

确定 shell 脚本是否为 bash 的最简单解决方案是使用checkbashism- 看man checkbashisms了解详情。

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

相关内容