【发布时间】:2012-07-07 18:49:40
【问题描述】:
在以下意义上是否存在至少符合POSIX.2 的shell(我们称之为mpcsh):
如果mpcsh myscript.sh 在我的(兼容的)系统上表现正确,那么xsh myscript.sh 将在任何兼容系统上的任何兼容 POSIX.2 的 shell xsh 上表现相同。 (“相同”到不太相关的事情,例如错误消息的措辞等)
dash 是否符合条件?
如果没有,有什么方法可以验证myscript.sh 的合规性吗?
编辑(9 年后):
接受的答案仍然有效,但请查看 this blog post 和 chackbashisms 命令 (source)。避免 bashism 与编写符合 POSIX.2 的 shell 脚本不同,但它很接近。
【问题讨论】:
-
Debian Almquist shell (
dash) 非常接近。 -
好的,
dash很接近:合规且简约。但它是 minimal,即我可以相信与dash一起工作的脚本可以在任何地方工作吗?如果不是,那就是“关闭,但没有cigar”的情况 -
问题是你会得到一整套最小的实用程序:最小的
cat,最小的grep,最小的dd...除非你正在编写一个纯shell脚本,你的可移植性将取决于您在整个环境中使用的功能。 -
在某种程度上,编写
configure脚本是一种完全不同的野兽,因为您需要解决不合标准的shell 中已知的缺陷(请参阅gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/…)。 -
生命太短了:我可以花一个小时来解决 crappix99 对 here documents 长度的 666 字节限制,或者只是指出我的
configure脚本符合 POSIX.2,现在请去寻找一个更好的外壳......