在主要的 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
答案3
如果你要学习sh
/以外的 shell bash
,你不妨就用zsh
。我认为没有人会质疑它是替代 shell 中最强大、功能最丰富的;当然,它是否只是臃肿,仍有待商榷。
我听说过关于的好事fish
,但从未付出努力去关心它们。
我认识的管理员认为csh
和tcsh
是令人厌恶的事情,应该不惜一切代价避免,尽管我从未被迫经历这两种情况,但我也同意他们的观点。
答案4
别忘了你的另一个问题最常见的 Unix/Linux shell- 最流行的 shell 之所以最流行可能是有原因的 ;-)
不管怎样,大多数人不会频繁切换 shell,因此很难对各种选项进行全面比较;您更有可能看到不同的人宣扬他们最喜欢的 shell 的优点。从我听到的关于不同 shell 的少量信息来看,它们都提供了一些相同的基本功能(如 I/O 重定向、命令历史记录等),因此个人偏好可能是一个很大的组成部分。