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/sh
但dash
.
确定 shell 脚本是否为 bash 的最简单的解决方案是使用checkbashism
-man checkbashisms
有关详细信息,请参阅。
checkbashisms
应该由不同的发行版打包,对于 Debian,它在devscripts
包中 - Fedora 在devscripts-minimal
(它曾经在rpmdevtools
)和 OpenSuSe 在rpmlint-mini