Linux用户分为两大类:谨慎的和大胆的。***类用户找到喜欢的东西后就坚持使用,不会朝三暮四。他们往往喜欢发行版的默认值。如果他们钟情于某个文本编辑器,这肯定是他们先熟练掌握的那个。另一类是几乎条件反射般地想尝试刚出现的新选项的用户。他们试过所能找到的不少窗口管理器、几十个发行版以及几乎每一个新的桌面窗口组件。
作为有15年使用资历的Linux用户(无论服务器端还是桌面端),我绝对属于***类用户,而不是第二类。我往往不太喜欢新奇的东西,这意味着我通常能找到全面的说明文档以及几乎任何用例的例子。如果我使用另类的东西,会认真研究要不要改用,而且常常取决于我信赖的人地竭力说服。
但是,这并不是说我不喜欢有时候尝试,看看我缺少什么。所以最近,在不假思索地使用多年的bash外壳后,我决定试一试另外四种外壳:ksh、tcsh、zsh和fish。这四种外壳都很容易从我Fedora中的默认软件库来安装,它们可能已经针对你选择的发行版进行了包装。
下面介绍了每一种外壳,以及为什么应选择它作为你的下一个Linux命令行解释器。
1.bash
首先,我们不妨看一下熟悉的外壳。GNU Bash(Bourne Again Shell)是这些年来我用过的几乎每个Linux发行版的默认外壳。bash***发布是在1989年,后来轻松成为了Linux界使用最广泛的外壳,还经常出现在其他类似Unix的操作系统中。
bash是一种备受推崇的外壳;如果你在网上寻找关于如何执行各种操作的说明文档,几乎免不了会找到假设你在使用bash外壳的操作说明。但是bash也有一些缺点,只要写过不止几行脚本的人都可以证明这一点。倒不是说你无法执行某个操作,而是阅读和编写起来并不总是来得特别直观(或者至少优雅)。想了解几个例子,只要看看这份常见bash陷阱列表。
话虽如此,bash可能早已得到了人们的接受,至少在不远的将来是这样,它有庞大的用户群,还有众多普通和专业的系统管理员已经习惯于其用法和小毛病。bash项目使用了GPLv3许可证。
2.ksh
KornShell(简称ksh)是一种替代的外壳,上世纪80年代从贝尔实验室发展而来,由David Korn编写。虽然起初是专有软件,但后来的版本采用Eclipse公共许可证发布。
ksh的支持者列出了他们认为它很出色的许多方面,包括拥有更好的循环语法、来自管道的更整洁的退出代码,更容易重复命令的方法以及关联阵列。它还能够模拟vi和emacs的许多行为,所以如果你非常偏爱文本编辑器,它可能值得一试。总的来说,我觉得它在基本输入方面非常类似bash,不过针对高级脚本,它肯定是不一样的体验。
3.tcsh
tcsh是csh即Berkely Unix C外壳的衍生版,它具有非常悠久的历史,可以追溯到Unix和计算机本身的早期阶段。
tcsh的一大卖点是其脚本语言,这种语言对用C编程的人来说看起来非常熟悉。有些人喜欢tcsh的脚本,而有些人讨厌tcsh的脚本。不过它还有其他功能,包括给别名添加变量以及可能符合你偏好的各种默认设置,包括带标签的自动完成和历史标签完成的工作方式。
你可以找到采用BSD许可证的tcsh。
4.zsh
zsh是另一种与bash和ksh都有相似之处的外壳。zsh起源于上世纪90年代初,它有许多实用功能,包括拼写纠正、主题、可命名目录快捷方式、跨多个终端共享命令历史,以及对早期的Bourne外壳所作的其他众多细微改进。
zsh的代码和二进制文件可使用类似MIT许可证的许可证来发行,不过有些部分使用GPL许可证。查看实际许可证,了解详情。
5.fish
我知道,如果我访问官方网站,看到它用半开玩笑的话来描述:“终于有了一种为90年代而生的命令行外壳”――fish是在2005年编写的,我会喜欢互动性良好的外壳fish。
fish的开发人员给出了改用fish的诸多理由,处处用调侃的语气来笑话并不是完全实至名归的外壳。功能包括:自动建议、支持VGA“惊人”的256色调色板,不过也有一些确实很有帮助的功能,包括根据你机器上的参考手册页完成命令、干净的脚本和基于Web的配置。
fish主要采用GPL版本2许可证,但是有些部分采用了其他许可证;查看软件库,即可了解完整信息。
原文标题:Top 5 open source command shells for Linux,作者:Jason Baker
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】