在主要的Unix shell(bash,ksh,tcsh,zsh等)中,是否有任何令人信服的理由来使用它们?
如果有人愿意,我可以制作这个社区wiki。
当前:
bash
– 在大多数Linux发行版中,Bourne再次shell,默认shell。 体面function; zsh
– function最丰富,但仍然很less使用; ksh
– 在Solaris,AIX等其他几个unices下的默认shell; tcsh
– 各种* BSD风味单位的默认shell; 历史性:
sh
– 原创Bourne shell(1977年发行)。 由bash过时; csh
– 原始的C shell(1978年发布)。 被tcsh和ksh所过时; 请注意,bash,ksh和zsh源自sh语法,而tcsh源自csh语法。 这是两个完全不同的语法。
function图 (wiki)。
鱼是一个比其他人更有趣的新壳,不是因为它必然有更多的特征,而是因为它们默认工作,并且因为鱼争取可用性。
一些截图( 1,2,3,4 )足以给出一般的想法。
鱼现在是我的Mac上工作的默认shell。 去搞清楚。
如果你要学习sh
/ bash
以外的shell,那么你可以使用zsh
。 我不认为有人认为这是最强大和function最齐全的替代炮弹。 当然,是否膨胀呢还有待辩论。
我听说过有关fish
好处,但从来没有努力去打扰他们。
我知道的pipe理员认为csh
和tcsh
是可憎的,应该不惜一切代价避免,我同意他们,尽pipe从来没有被迫把我自己的任何壳。
我会build议知道bash,因为它是最常见的(通常是Linux默认)之一。 就我个人而言,我喜欢zsh作为我的交互式shell。 它有很大的完成function。 例如,你可以设置一个主机列表,当你做一些像ssh Ser [tab]的时候,它会知道尝试自动完成其中的一个主机。 它也有recursionglobing,所以如果你想在当前和子目录中find所有的jpeg文件,你可以使用ls -ld **/*.jpg
。 zsh(search人们的.zshrc文件)有许多有趣的function,你可以将它设置为'bash compatible',所以很容易在两者之间切换。 如果你把它和GNU Screen结合起来,你可能会发现命令行变得非常愉快。
不要忘了你的其他问题最常见的Unix / Linuxshell – 最stream行的shell可能是最受欢迎的原因;-)
对于什么是值得的,大多数人不经常closuresshell,所以很难全面比较各种选项。 你会更有可能看到不同的人支持他们最喜欢的炮弹的美德。 从我听到的关于不同的炮弹的东西,他们都提供了一些相同的基本function(如I / Oredirect,命令历史等),所以个人偏好可能是一个大的组成部分。
使用尚未提及的ZSH的令人信服的理由是vi模式和emacs模式 。
对于那些喜欢在shell中使用vi肌肉记忆的人来说,这是一个杀手锏。
而对于那些喜欢emacs的人,也可以使用这些键绑定,但真正的emacs-believers可能会说emacs是他们最喜欢的shell。
😉
日常使用的偏好实际上是一种个人品味,但是在编写脚本时,为了便于携带,我尝试使用posix。
就像头一样:Ubuntu默认“sh”到“dash”,这导致了过去POSIX兼容性方面的一些问题。 显然,回声命令略有不同。