所有操作系统都有其理念。而且,操作系统的理念至关重要。Linux 的理念是什么?它如何影响社区?它如何改变了时代的软件开发?
无论我们是否知道,我们大多数人都有一种生活哲学。它可能像“善待他人”一样简单,也可能是一种非常复杂的人生哲学。
许多公司也有某种理念。它们可能是不成文的,也可能是文件充分记录的。当我在 1974 年到 1995 年在 IBM 工作时,IBM 的理念被充分记录并深深地根植于企业文化中。IBM 的理念涵盖了其商业行为以及员工、客户和供应商应如何受到对待。IBM 的首要指令,就像它所说的那样,是公平、尊重和尊严地对待每个人。
在我开始深入研究 Linux 之前,我从来不知道它有理念。我的意思是,理念实际上能为操作系统做什么?经过一番研究,我发现所有操作系统都有理念。我也了解到操作系统的理念很重要。
例如,Windows 的理念与数字设备公司 (DEC) 的 VMS 操作系统的理念非常相似。它相当于“让用户远离任何可能让他们陷入麻烦的事情”。当然,这种相似性的原因是 Windows NT 的主要开发者与 VMS 的开发者是同一个人。这两种操作系统的理念都基于一个潜在的信念,即用户害怕计算机,需要被保护,免受其复杂性的影响。
MAC OS 并没有太大的不同,尽管图形用户界面 (GUI) 桌面采用了面向对象的方法,在许多人看来,这种方法提供了更一致、更集成和更流畅的用户体验。MAC 和 Windows 都提供了命令行界面 (CLI),允许用户与操作系统之间进行底层交互。然而,Windows CLI 非常有限,命令很少,至少与 Linux 和 Unix 相比是这样。
MAC CLI 是一个 BASH shell,它提供了强大的功能,就像在 Linux 上一样。然而,它却很难找到。shell 隐藏在大量的菜单选项中,只有当你知道它在那里并积极寻找它时才能找到。
激进的概念
当 Unix 在 20 世纪 60 年代末和 70 年代初被开发出来时,开发者们的目标是构建一个与之前的操作系统截然不同的操作系统。Unix 的理念与其他操作系统明显不同。而 Linux 的理念自然而然地直接来源于 Unix 哲学。
我发现 Mike Gancarz 在《Linux and the Unix Philosophy》一书的引言部分中对 Unix 哲学的以下引用非常具有启发性。
操作系统本质上体现了其创造者的哲学……Unix 操作系统的创造者从一个激进的概念开始:他们假设他们的操作系统的用户从一开始就具有计算机素养。整个 Unix 哲学都围绕着用户知道自己在做什么的想法。
哇!他们真的这么说了!这听起来相当精英主义和排斥性。但实际上并非如此。恰恰相反。
我最喜欢的 关于 Unix 的引言 之一也适用于 Linux,通常被归因于一个名叫 Doug Gwyn 的人,但无法可靠地获得关于他的信息。无论 Doug 是否存在,这仍然是一句伟大的引言
Unix 的设计目的不是阻止用户做愚蠢的事情,因为那样也会阻止他们做聪明的事情。
而这正是 Linux 的真相。它从不假设用户是无能的。它总是假设你知道自己在做什么,并允许你做任何你告诉它做的事情。任何事情。无论它是否是无意中的坏事。这是一个用户手中拥有的巨大力量。
Linux 平等地对待每个人,并允许每个人拥有最大的权力。这是平等的。其他操作系统是精英主义和排斥性的,因为它们将权力保留或隐藏在僵化的图形用户界面后面,该界面只允许人们做开发者认为我们应该被允许做的事情。
启蒙
多年来,许多人试图通过编纂 Linux 哲学的各个方面来启发我们其他人。
Mike Gancarz 首先撰写了Unix 哲学,然后又跟进了Linux 和 Unix 哲学。这些书列出了 9 条主要原则和 10 条次要原则。
Eric Raymond 在他的书《Unix 编程艺术》中列出了 17 条 Unix 规则。
俄勒冈州立大学也有其 自己的 Linux 哲学,我认为它很好地描绘了工程师对 Linux 的看法。
与其在此处列出所有这些原则和规则以及它们的所有含义,不如我在本文的参考资料部分列出了链接或书籍,可以从中获得这些信息。我把它留给你们,亲爱的读者,去查找它们,找出它们的含义。相信我,这将是一次非常有启发性的练习。
终端案例
Linux 哲学通过轻松打开终端模拟器来访问 CLI 及其随之而来的强大功能而得到充分体现。首先,可以使用 Ctrl-Alt-F [1-7] 键访问多个虚拟终端。即使 Linux GUI 桌面也会对所有使用它们的人低语:“使用原力,卢克。” Linux 有几个优秀的 GUI 桌面环境可供选择,以便每个用户都可以选择自己最喜欢的一个。然而,CLI 的强大功能只需点击一下即可获得,终端模拟器和 shell 都有多种选择。
我最喜欢的 GUI 桌面终端模拟器是 Konsole。Konsole 允许在 GUI 窗口中使用选项卡在终端会话之间切换,从而实现多个终端会话。当然,你可以在所有会话中使用你最喜欢的 shell,也可以根据你的需要,在每个会话中使用不同的 shell。
为了获得更大的灵活性,还有 screen 程序,它在单个终端会话中提供多个 shell 会话。当远程登录时,这尤其有用,因为如果你的连接失败,screen 会话会连同在 screen 会话中启动的各种 shell 中运行的所有程序一起继续运行。
Linux CLI 温柔地诱惑;它以其力量引人入胜。它的灵活性吸引了我。它改变了我——当然它改变了我使用计算机的方式。我仍然使用 GUI 桌面,但很大程度上是为了为我提供多个 Konsole 会话的灵活性,并在其中运行 screen,以便运行 LibreOffice、Firefox 和 Thunderbird 等程序。
完全控制
Linux 不会手把手地教你。它假设你在键入命令时知道自己在做什么,然后它会继续执行该命令,而不会询问你是否真的想这样做。它赋予你完全的控制权。
想象一下,如果尝试使用射钉枪,它会问你是否真的想射出那枚钉子,并且在你大声说出“是”之前不允许你扣动扳机,那将会造成怎样的混乱和挫败感。Linux 允许你随意使用射钉枪。其他操作系统让你知道你可以使用钉子,但不会告诉你用什么工具来插入钉子,更不用说让你自己扣动扳机了。
是的,有强大的力量的地方就有危险。明智地使用这种力量也可以用来完成许多伟大的事情。
Linux 的首要指令
我已经开始相信,Linux 哲学的总结非常简单。
尊重所有用户。
这相当于允许每个用户使用各种强大的工具,以她或他自己的方式做事。这意味着在设计和构建软件系统时,将灵活性、简洁性和自由放在首位。它催生了软件的诞生,这种软件本身就是一件艺术品,在 Unix 诞生近 45 年和 Linux 诞生 20 多年后,它仍然美丽而强大。
所有这些如何转化为现实世界?在未来的文章中,我将告诉你更多我的观点,我将在其中讨论一些个别原则及其在日常系统管理任务和使用 Linux 的其他方面的应用。
参考文献
- Eric Raymond:《Unix 编程艺术》,http://www.catb.org/~esr/writings/taoup/html/index.html
- Mike Gancarz:《Linux 和 Unix 哲学》;Digital Press,2003 年,ISBN 1-55558-273-7
- 维基百科:http://en.wikipedia.org/wiki/Unix_philosophy
- 俄勒冈州立大学:http://web.engr.oregonstate.edu/~traylor/ece474/lecture_verilog/beamer/linux_philosophy.pdf
- Unix 最佳语录:http://www.linfo.org/q_unix.html
本文的法语译文可以在这里查看,由 Fabrice Dumont 提供。
21 条评论