Ing*_*nix 5 shell command-line
我对 Windows 上的 Shell 工作方式感到非常厌倦 - 而且没有那么多选择。所以我考虑过写自己的shell。然而,在阅读有关 autotools 生成的脚本的一些文档时,我注意到有时会使用“SH 兼容”或“POSIX 类兼容 shell”。
据我所知,Bash 脚本与 Fish 不兼容,因为&&它被文字替换and- 这只是我一眼就能发现的区别。
那么,一个 shell 需要“SH 兼容”或“类 POSIX 兼容 shell”吗?除了读取要执行的命令和存储一些变量之外,shell 实际上并没有做很多事情,所以我认为这只是语法上的。或者,我错了吗?
那么,一个 shell 需要“SH 兼容”或“类 POSIX 兼容 shell”吗?
它需要遵循POSIX 标准指定的行为。POSIX 是一个开放标准 - 您可以在https://pubs.opengroup.org/onlinepubs/9699919799/在线阅读。请参阅Shell 和实用程序 2. Shell 命令语言部分,了解与 shell 行为相关的文档。
没有(至少我不知道)认证公司会将特定的 shell 程序认证为“POSIX 兼容”。整个操作系统都获得了POSIX 认证,然后这些操作系统附带了 POSIX 兼容的 shell。如果项目没有足够的资金让外部公司进行认证,通常由作者自己决定是否希望他的创作兼容 POSIX,如果他这样做,那么用户期望 shell 按照 POSIX 指定的方式运行。
例如,Bash 脚本与 Fish 不兼容
来自bash 手册:
它旨在成为 IEEE POSIX 规范(IEEE 标准 1003.1)的 IEEE POSIX Shell 和工具部分的一致实现。
来自鱼主页:
与其他 shell 不同,fish 不遵循 POSIX 标准,但仍然使用大致相同的模型。