Linux 最佳 5 款开源命令 Shell

暂无读者喜欢此文。
Top 5 open source command shells for Linux

Opensource.com

Linux 用户分为两种:谨慎型和冒险型。

一类用户几乎是本能地尝试所有新出现的选项。他们尝试过无数个窗口管理器、几十个发行版,以及他们能找到的每一个新的桌面小部件。

另一类用户则会坚持使用他们喜欢的东西。他们倾向于喜欢发行版的默认设置。如果他们对文本编辑器情有独钟,那一定是他们最先掌握的那个。

 

 

作为一名 Linux 用户,无论是在服务器端还是桌面端,至今已有十五年了,我绝对更倾向于第二类用户。我习惯于使用现有的东西,而且我喜欢这意味着我通常可以找到详尽的文档和示例,来解决我能想到的任何用例。如果我使用非标准的东西,那么这种切换一定是经过仔细研究的,并且往往是基于我信任的人的强烈推荐。

但这并不意味着我不喜欢偶尔尝试一下,看看自己错过了什么。所以最近,在使用 bash shell 多年而从未考虑过其他选择之后,我决定尝试四种替代 shell:ksh、tcsh、zsh 和 fish。这四种 shell 都很容易从我在 Fedora 中的默认存储库安装,而且它们很可能也已经为您的首选发行版打包好了。

下面简单介绍一下每种选项,以及您可能选择它作为您的下一个 Linux 命令行解释器的原因。

bash

首先,让我们回顾一下熟悉的 shell。GNU Bash,即 Bourne Again Shell,几乎在我这些年使用过的每个 Linux 发行版中都是默认 shell。Bash 最初于 1989 年发布,现已发展成为 Linux 世界中使用最广泛的 shell,并且在其他类 Unix 操作系统中也很常见。

Bash 是一款非常不错的 shell,当您在互联网上查找关于如何执行各种操作的文档时,几乎总是会找到假设您正在使用 bash shell 的说明。但是 bash 也有一些缺点,任何编写过超过几行 bash 脚本的人都可以证明这一点。这并不是说您不能做某事,而是说它的读写方式并不总是特别直观(或至少不够优雅)。有关一些示例,请参阅此常见的 bash 陷阱列表。

即便如此,bash 可能至少在不久的将来仍将继续存在,因为它拥有庞大的安装基础,以及无数已经熟悉其用法和怪癖的休闲和专业系统管理员。bash 项目在 GPLv3 许可证下提供。

ksh

KornShell,也以其命令调用名 ksh 而闻名,是 20 世纪 80 年代在贝尔实验室开发的一种替代 shell,由 David Korn 编写。虽然最初是专有软件,但后来的版本在 Eclipse Public License 下发布。

ksh 的支持者列举了他们认为 ksh 优越的一些方面,包括拥有更好的循环语法、来自管道的更清晰的退出代码、更简单的重复命令方式以及关联数组。它还能够模拟 vi 或 emacs 的许多行为,因此如果您特别喜欢某种文本编辑器,那么可能值得一试。总的来说,我发现对于基本输入而言,它与 bash 非常相似,但对于高级脚本编写而言,它肯定会是一种不同的体验。

tcsh

Tcsh 是 csh(即 Berkely Unix C shell)的衍生版本,其历史可以追溯到 Unix 和计算机的早期。

tcsh 的主要卖点是其脚本语言,对于任何用 C 语言编程过的人来说,这应该看起来非常熟悉。Tcsh 的脚本语言有人喜欢,也有人讨厌。 但它也具有其他功能,包括向别名添加参数,以及可能符合您偏好的各种默认设置,包括使用 Tab 键自动完成和历史记录 Tab 键完成的工作方式。

您可以在 BSD 许可证下找到 tcsh。

zsh

Zsh 是另一个与 bash 和 ksh 相似的 shell。Zsh 起源于 90 年代初期,具有许多有用的功能,包括拼写校正、主题、可命名的目录快捷方式、跨多个终端共享命令历史记录,以及对原始 Bourne shell 的各种其他细微调整。

zsh 的代码和二进制文件可以在类似 MIT 的许可证下分发,尽管部分代码在 GPL 下;有关详细信息,请查看实际许可证

fish

当我访问 Friendly Interactive Shell fish 的网站时,看到它略带讽刺地描述为“终于,一款 90 年代的命令行 shell”——fish 是在 2005 年编写的,我就知道我会喜欢它。

fish 的作者提供了许多理由来促使您进行切换,所有理由都带有一点幽默感,并略微嘲讽了那些不太尽如人意的 shell。功能包括自动建议(“小心,Netscape Navigator 4.0”)、支持 VGA“惊人的”256 色调色板,但也有一些非常实用的功能,包括基于您机器上的 man 手册的命令完成、简洁的脚本编写和基于 Web 的配置。

Fish 主要在 GPL 版本 2 下获得许可,但部分代码在其他许可证下;有关完整信息,请查看存储库。


正在寻找关于每个选项之间精确差异的更详细介绍?这个网站应该能帮到您。

那么我最终选择了哪个?嗯,最终,我可能还是会回到 bash,因为这些差异非常细微,以至于主要以交互方式使用命令行而不是编写高级脚本的人真的不会从切换中获得太多好处,而且我已经非常习惯 bash 了。

但我很高兴我决定走出我的“shell”(哈!)并尝试一些新选项。而且我知道还有很多很多其他的 shell。您尝试过哪些 shell,您更喜欢哪一个?请在评论中告诉我们!

Jason Baker
前红帽员工。现在是一名顾问和有抱负的企业家。地图爱好者、创客,以及开源桌面和自托管软件的热情安装者。

6 条评论

很棒的文章。我最常用 bash。我以前从没听说过 fish。我得去看看。作为一名历史专业的学生,我最喜欢的 bash 命令之一是 'cal',我用它来查看《独立宣言》和其他历史事件发生在星期几。

很棒的文章 - 谢谢 :)

虽然我可能主要是一个 bash 用户,但我发现自己越来越依赖于我设计的扩展 python shell。它允许我访问 python 的所有功能,导入脚本、类等,以及执行“正常”的 shell 操作,例如访问 GNU 日常命令。

我也更喜欢 bash,但在读完这篇文章后会更多地了解 fish。
好消息是 Bash 仍在维护……所以我们现在只需要维护人员发布一些向后兼容的更新来解决您提到的那些怪癖,就不需要切换了!;)
实际上,当在一个如此稳定的 shell 上进行了多年的开发之后,很多人很难切换。

我于 1999 年开始使用 Solaris 上的 ksh93,因此当我在 Linux 环境中工作时,过渡到 bash 似乎很自然。我喜欢它的稳定性,并且在其中编程似乎还不错。
当您的所有脚本、配置文件别名和函数在您当前的 shell 中都能正常工作时,切换到新的 shell 是很有挑战性的。
我也尝试过 zsh,但没有花足够的时间学习如何配置它。但是,在阅读了这篇文章之后,Fish 看起来非常有趣。

我更喜欢用“bashful”这个词来指代我自己和所有其他 bash 用户。

我在工作中使用 tcsh,因为环境就是用它编写脚本的,但我总是很高兴回到家中使用 BASH。在每周使用 tcsh 50 小时两年后,我大部分时间都习惯了它,但很难放弃对 BASH 的一些便利功能的喜爱,所以我继续在家中使用它(尽管自从体验到 TCSH 和 BASH 之间的真正区别以来,我的 shell 脚本也因此变得更加 shell 不敏感了)。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.