许多shell开发人员花费大量精力开发可移植代码,避免使用例如Bashisms,我想知道这种增加的工作量对于满足软件需求有多大帮助。
我想知道是否可以提供一个简单的需要便携式代码的条件清单。我们假设
$BETTER_LANGUAGE
实际上是有道理的,到目前为止,我已经想到了这一点:
dash
在未来)并提供不同的实现是不可行的。是否有任何我没想过的明显条件,或者是否可以更普遍地表达? POSIX合规性是否需要与一般可移植性不同的清单?是否有任何文献或其他资料来源推荐?
答案 0 :(得分:1)
我想知道这种增加的努力有多少真正有助于满足软件要求。
这 - “这种增加的努力” - 表明首先选择shell作为编程语言是错误的。 Shell是管道的语言:你没有在其中实现工具 - 你用它来控制其他工具。如果shell脚本需要很长时间来开发,如果遇到POSIX shell的限制,那么shell很可能是错误的语言。
唯一的例外,就是你的清单中缺少的东西,是一个裸露的环境,好像刚安装好的商业UNIX系统(可能还有一些* BSD系统)。如果你为这样的系统开发软件,那么你可能不得不使用POSIX shell,因为系统上可能没有安装任何其他东西(就像在字面上“字面上没有任何东西”)。
最后,所有软件都附带了依赖项和先决条件列表。如果你将bash
作为依赖项包含在内,那就不会打扰* NIX admin:bash
通常是此类系统上安装的第一个第三方软件包。此外,与其他第三方软件相比,bash
(与其他流行的shell一样,例如csh
,tcsh
,ksh
)实际上没有安装和依赖性问题。
POSIX合规性是否需要与一般便携性不同的清单?
没有“一般便携性”这样的东西。可移植性总是特定。
广泛定义的软件可移植性是软件在两个或多个不同操作系统上运行的能力。 POSIX是一种操作系统标准,为用户和软件开发人员定义了OS接口的一部分。它是一个平台基础,而不是它自己的平台。
POSIX合规要求我只在一些利基市场看到过。通常唯一的原因是它是唯一存在的操作系统ISO标准。
对于没有“POSIX合规性”硬性要求的软件,通常建议针对特定平台。公分母可能仍然是POSIX标准,但操作系统特定的功能,自定义和处理只是使软件更好地为特定平台的用户。
最后,用户不关心POSIX。 POSIX是开发人员的工具。开发人员使用它来降低为多平台开发和维护软件的成本。因此,来自用户的要求是对特定平台的支持,而不是“POSIX合规性”。