POSIX、Bash 和其他脚本编写 shell 之间有什么区别?

POSIX、Bash 和其他脚本编写 shell 之间有什么区别?

在查看 Unix 和 Linux 上的许多答案时,我发现其中许多人用以下方式编写内容和标签POSIX或者重击或其他一些标准的 Linux shell。

我知道一些差异,比如有些有数组,有些没有,以及我不完全意识到的其他系统级别差异。

问题其中哪一种应用最广泛?坚持其中一种是否比另一种更有长期利益?

对于一个人来说,什么是重要的?重击脚本编写者要在另一个 shell 中开始编写脚本吗?

答案1

你的问题太大了,只能笼统地回答。

POSIX 是操作系统接口标准家族;当您希望应用程序在各种 Unix 系统上运行时,您通常会以一致的方式编写代码/运行实用程序。尽管 GNU binutils 和 bash 很受欢迎,但它们并没有得到普遍使用,因此当需要将应用程序从 Linux 迁移到 Mac OS 时,坚持使用符合 POSIX 的函数、标志和实用程序可以为您省去一些麻烦。

“高级脚本”的描述性不足以推荐一种语言,但如果您主要做的是运行程序并使用其他程序来处理结果,那么 shell 是合适的工具。我认为您使用哪种 shell 并不重要,因为通常的 shell 都是便携式的,并且可以与您的应用程序一起构建和安装。但是,如果您使用一维数组以外的数据结构,则应该使用更容易操作此类结构的语言,例如 Perl。

答案2

其中哪一种应用最广泛?

重击

对于不需要可移植性的常见任务来说最受欢迎。

POSIX

是使脚本可移植的唯一方法。


什么可移植性方法

这意味着能够在几乎所有 Linux 和类似平台(例如 Cygwin 或 Android)上运行您的脚本。不过,请注意,编写脚本需要一些技巧POSIX-ly。示例超出了本问答的范围。请随意查看 U & L。

答案3

POSIX 是一个标准,定义了 POSIX 兼容的操作系统(如 Linux)应该如何运行/工作。

对于 shell 脚本,“sh”是默认的命令解释器,现在它通常是另一个解释器(bash、ksh...)的链接。它们每个的核心功能都是相同的,但每个都有其特殊性(在功能、语法方面......)。

我认为,使用最广泛的是 bash,但这是基于我的经验。

相关内容