【问题标题】:What makes a shell "POSIX compliant"?是什么让外壳“符合 POSIX”?
【发布时间】:2021-05-25 08:24:38
【问题描述】:

我已经厌倦了 Shell 在 Windows 上的工作方式 - 而且,没有那么多选择。所以我考虑只写自己的shell。然而,在阅读一些关于 autotools 生成的脚本的文档时,我注意到有时会使用“SH compliant”或“POSIX-like compliant shell”。

据我所知,例如,Bash 脚本与 Fish 不兼容,因为 && 被替换为文字 and - 这只是我一眼就能发现的一个区别。

那么外壳需要“符合 SH”或“符合 POSIX 的外壳”吗?除了读取要执行的命令和存储一些变量之外,shell 并没有真正做很多事情,所以我认为它只是语法上的。或者,我弄错了吗?

【问题讨论】:

  • and that is only one difference "only"... ?
  • @KamilCuk 这只有一个不同,(还有更多不同)。
  • @IngwiePhoenix : 表示它遵循this 的标准,更容易阅读这件事,似乎很好地涵盖了它,可以找到here。

标签: shell command-line


【解决方案1】:

那么外壳需要“符合 SH”或“符合 POSIX 的外壳”吗?

它需要遵循POSIX standards 指定的行为。 POSIX 是一个开放标准 - 您可以在 https://pubs.opengroup.org/onlinepubs/9699919799/ 在线阅读它。有关 shell 行为的文档,请参见 Shell & Utilities 2. Shell Command Language 部分。

没有(至少我不知道)认证公司会将特定的 shell 程序认证为“符合 POSIX”。整个操作系统都获得了POSIX-certified,然后这些操作系统带有与 POSIX 兼容的外壳。对于没有足够资金让外部公司进行认证的项目,通常作者的意愿是说他的创作是否与 POSIX 兼容,如果他这样做,那么用户期望外壳按照 POSIX 指定的方式运行。

例如,Bash 脚本与 Fish 不兼容

来自bash manual:

它旨在成为 IEEE POSIX 规范(IEEE 标准 1003.1)的 IEEE POSIX Shell 和工具部分的一致实现。

来自fish home page:

与其他 shell 不同,fish 不遵循 POSIX 标准,但仍使用大致相同的模型。

【讨论】:

  • 谢谢!我不知道软件实际上可以首先通过 POSIX 一致性认证——这实际上很酷。这些肯定是很好的读物!
猜你喜欢
  • 2012-07-07
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多