Unix shell 比较

Unix shell 比较

在主要的 Unix shell(bash、ksh、tcsh、zsh 以及其他?)中,是否有令人信服的理由选择使用其中一个?

  • 哪一个是最具交互性/命令行友好的?
  • 哪一个最有利于/直观地编写脚本?
  • 一个 shell 是否提供了其他 shell 没有的主要内置功能?
  • 这些 shell 是否真的只适用于一种功能,而不适用于另一种功能?或者它们都非常全面/灵活?
  • 这仅仅是个人喜好的问题吗?

如果有人愿意的话,我可以创建这个社区维基。

答案1

当前的:

  • bash— Bourne again shell,大多数 Linux 发行版中的默认 shell。功能不错;
  • zsh— 功能最丰富,但仍然很少使用;
  • ksh— Solaris、AIX 和其他一些 UNICES 中的默认 shell;
  • tcsh— 各种 *BSD 风格 unices 中的默认 shell;

历史性:

  • sh— 最初的 Bourne shell (1977 年发布)。已被 bash 取代;
  • csh— 原始 C shell (1978 年发布)。已被 tcsh 和 ksh 取代;

注意,bash、ksh 和 zsh 源自 sh 语法,而 tcsh 源自 csh 语法。这是两种截然不同的语法。

特征图(维基百科)。

答案2

是一种新的 shell,它也许比其他的更有趣,并不是因为它一定有更多的功能,而是因为它们默认情况下就可以工作,而且 fish 力求可用性。

一些截图(1234) 足以说明大概意思。

fish 现在是我工作时 Mac 上的默认 shell。想想看。

答案3

如果你要学习sh/以外的 shell bash,你不妨就用zsh。我认为没有人会质疑它是替代 shell 中最强大、功能最丰富的;当然,它是否只是臃肿,仍有待商榷。

我听说过关于的好事fish,但从未付出努力去关心它们。

我认识的管理员认为cshtcsh是令人厌恶的事情,应该不惜一切代价避免,尽管我从未被迫经历这两种情况,但我也同意他们的观点。

答案4

别忘了你的另一个问题最常见的 Unix/Linux shell- 最流行的 shell 之所以最流行可能是有原因的 ;-)

不管怎样,大多数人不会频繁切换 shell,因此很难对各种选项进行全面比较;您更有可能看到不同的人宣扬他们最喜欢的 shell 的优点。从我听到的关于不同 shell 的少量信息来看,它们都提供了一些相同的基本功能(如 I/O 重定向、命令历史记录等),因此个人偏好可能是一个很大的组成部分。

相关内容