您问题中的陈述不正确。Solaris 10之前的Solaris 正在提供旧的真正的Bourne shell /bin/sh
。这样做是为了不破坏与可能因其他Shell而失败的旧脚本的兼容性。否则,这个选择非常令人沮丧。
大多数(如果不是全部)其余的Unix和类似Unix的发行版(包括Solaris 11)的确提供了POSIX兼容外壳,/bin/sh
因为POSIX要求sh
命令启动POSIX外壳,而不是不兼容的旧版Bourne外壳。/bin/sh
通常是:
ksh88
或ksh93
在商业Unix实现上
- 修改
bash
过OS/X
(尽管以前是zsh
)
- 一个
ash
或pdksh
另一个的派生BSDs
bash
或dash
在Gnu / Linux发行版上。
它不一定是链接,但可以在许多系统(但Gnu / Linuxes)上是真正的可执行文件。
有趣的是,尽管最能回答您问题的答案是什么,并不是不是缺少导致发行人安装不同于传统Bourne shell的功能的功能,/bin/sh
而是希望尽可能地符合POSIX,即表现得像Unix之类的OS。POSIX外壳比传统的Bourne外壳具有更多功能的事实仅仅是此标准合规目标的副作用。
这也是一个事实,有些外壳bash
在调用时的行为特别不同sh
,这主要是从外壳中删除功能,而不是相反。