不同的 Shell 脚本如何映射到不同的操作系统

不同的 Shell 脚本如何映射到不同的操作系统

我是 Linux 新手,对 shell 脚本有一些疑问:

  • C 壳
  • Bash 外壳
  • 伯恩壳
  • 科恩壳牌

这么多“shell”!对于这些,我如何知道我的 Linux 系统配置了哪些解释器?如果我不支持,korn那么我该如何配置我的系统来支持它?

另外,哪一个 shell 最“活跃”(最频繁更新和维护)?

提前致谢!

答案1

你所提到的问题正是我们拥有POSIX 兼容 Shell以及编写“可移植”代码的能力。只要您遵守该链接中列出的符合 POSIX 的语法,您就可以放心,您的代码是可移植的。

话虽如此,如果您的目标受众仅仅是 Linux,那么我见过的每个 Linux 发行版都带有bash默认 shell,因此您可以相当有信心,兼容 Bash 3.x 的脚本几乎可以在任何 Linux 发行版上运行。

答案2

第一个 UNIX 是在 AT&T 开发的。第一个 shell 是 Bourne shell。它非常酷,但也有一些严重的局限性。

当家伙在伯克利开始使用 UNIX 并试图使其变得更好,他们推出了 C shell。它有一种不同的编程语言(尽管它本身也有缺陷),但在交互使用方面则要好得多。由于它在交互使用方面的优势,它在从 Berkeley UNIX 衍生的任何 UNIX 中都非常流行。

C shell(或 csh)衍生出一个名为 tcsh 的开源克隆。如果您使用 csh,您可能不会使用“真正的”或原始 csh,而是使用 tcsh。

与此同时,UNIX 的开发者们并没有袖手旁观。Dave Korn(好人)创建了一个新的 shell,叫做... Korn shell。它遵循了 Bourne shell 创建的编程模型(可以说优于 csh 模型)。它变得非常流行,成为许多人的日常 shell。它也成为了 UNIX 规范的一部分。这催生了一个相当流行的开源克隆,叫做 pdksh,它非常接近(但不是 100%)兼容。最终 AT&T 将代码作为开源发布。

GNU 团队希望开发自己的 UNIX 式系统,因此他们需要一个 shell,一个可以无需担心许可问题的 shell。他们创建了 bash,即 Bourne Again SHell。它与原始 Bourne 基本兼容,并借鉴了 Csh 和 Ksh 的思想,它之所以流行,既因为它易于使用,也因为它随每个 Linux 一起提供。它已经有几个版本,版本 2 是第一个非常实用的版本,现在的版本 4 具有新功能。

然后出现了 zsh。它也遵循 Bourne shell 语法,并复制了 Bourne shell、ksh、csh 和 bash 中的优点。可以说,它拥有最先进的语法,并且具有其他 shell 所没有的功能。

总结那么,该用什么呢?如果您正在编写启动脚本,则需要使用与 POSIX/Original Bourne 兼容的 /bin/sh。该语言比较简陋,但即使没有 /usr 等磁盘,它也能运行。

如果不是启动脚本,您还有更多选择。如果您只使用自己的机器,请使用当前可用的任何脚本。您可以控制自己的机器。如果您编写的脚本是要赠送给其他人,我会使用 /bin/sh 或 bash。/bin/sh 虽然简单,但始终可用。bash 是开源的,因此几乎始终可用,它足够老旧,可以随处使用,但又足够新,可以拥有一些新功能。Csh 并非随处可用,zsh 也并非随处可用。

相关内容