如何查明脚本是否是用bash
or编写的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/sh
but dash
。
确定 shell 脚本是否为 bash 的最简单解决方案是使用checkbashism
- 看man checkbashisms
了解详情。
checkbashisms
应该由不同的发行版打包,对于 Debian,它位于devscripts
软件包中 - Fedora 中devscripts-minimal
(以前位于rpmdevtools
)和 OpenSuSe 中rpmlint-mini