【问题标题】: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
相关资源
最近更新 更多