我知道 dash 非常严格地遵守 POSIX 标准,但我知道它不是 100.00% 严格的 POSIX,没有任何额外的东西。据我所知,最接近/完全符合 POSIX 标准的 shell 是设置了 POSIXly 正确标志的 mrsh 或 yash。
现在我想确切地知道 POSIX 标准中没有指定 dash 的哪些部分/功能(无需阅读整个POSIX.1-2017以及 dash 的源代码)。
我已经尝试过广泛的谷歌搜索(就我对这个主题的了解而言),但谁会想到,这完全是关于 bash 和 dash 之间的差异以及 dash 如何非常符合 POSIX 等等的结果。
答案1
dash
以下是POSIX.1-2017 所指定的额外功能及其内置功能的清单的开始。
- 通过内置支持变量和选项的本地范围
local
(来自 1989 年的原始 Ash)。 - 支持(在某些版本中)某些
-V
/-E
选项作为 , 的-o vi
别名-o emacs
。 -I
作为别名-o ignoreeof
(所有选项都有一个等效的单字母,因此可以在 中跟踪$-
,您可以使用 使其本地化local
)。- 支持
-p
/-o privileged
选项。 -l
作为登录 shell 启动的选项- 它
echo
支持该-n
选项 - 它
read
支持一个-p prompt
选项 - 它
printf
支持%f/e/E/g/G
指令。 - 并
echo
支持输出ESCprintf
。\e
- 其
[
/test
支持-ef
,-nt
,-ot
,<
,>
运算符 - 它
ulimit
支持 POSIX 指定的更多选项 - 处理
MAIL
,MAILCHECK
,MAILPATH
变量。