dash、ash 和 sh 脚本是否 100% 兼容?

use*_*057 22 shell compatibility dash shell-script ash

我想知道为 dash、ash 和 sh 编写的脚本是否 100% 兼容?

dash 或 ash 或语法更改是否有任何附加功能?

据我所知,ash 是 sh 的直系后代。

Zla*_*tko 21

简短的回答是否定的,它们不是 100% 兼容的。

但是大多数 shell 都非常接近基本的,因此您很少会遇到不一致的情况。事实上,大多数 shell 的区别并不在于添加的语法,而是一些额外的功能,如制表符完成和类似的功能。

此外,它dashash从 BSD 到 Linux的后代,或者说是从 BSD 移植到 Linux,准确地说。所有这些都应该是sh. 事实上,sh在大多数系统上只是一个符号链接bashdash或别的东西。重要的是 POSIX 合规性——当您根据标准编写脚本时,您不会遇到问题。

这些外壳之间的区别在于优化和性能。它们的功能不那么丰富bash,但它们是完全合法的外壳。例如,Bash 功能丰富,可用于交互式工作,但会占用更多内存。