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

use*_*057 8 shell bash shell-script

如何确定脚本是用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?

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

Ulr*_*gel 15

实际上,shebang 行的含义是某些发行版(如 Debian)不bash用于/bin/shdash.

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

checkbashisms应该由不同的发行版打包,对于 Debian,它在devscripts包中 - Fedora 在devscripts-minimal(它曾经在rpmdevtools)和 OpenSuSe 在rpmlint-mini