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

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

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

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

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

答案1

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

但大多数 shell 都非常接近基本的,因此您很少会遇到不一致的情况。事实上,大多数 shell 在添加的语法方面差别不大,但在一些额外的功能(如制表符补全等)方面有所不同。

而且,准确地说,它dash是 BSD 到 Linux 的后代。ash它们都应该是 的后代或不同的实现sh。事实上,在大多数系统上,它只是或其他内容sh的符号链接。重要的是 POSIX 合规性 — 当您根据标准编写脚本时,就不会遇到问题。bashdash

这些 shell 之间的区别在于优化和性能。它们的功能不太丰富bash,但它们是完全合法的 shell。 Bash 具有丰富的交互式工作功能,但会占用更多内存。

答案2

应该提到的是,在某些系统上,特别是 Debian,/bin/灰烬不可用:

$ type ash dash
bash: type: ash: not found
dash is /bin/dash

相关内容