所有操作系统都有其理念。而且,操作系统的理念至关重要。Linux 的理念是什么?它如何影响社区?它如何改变了软件开发的时代?
无论我们是否意识到,我们大多数人都拥有某种人生哲学。它可能像“善待他人”一样简单,也可能是一种非常复杂的人生哲学。
许多公司也有某种理念。它们可能是不成文的,也可能是记录在案的。当我在 IBM 工作时(从 1974 年到 1995 年),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 和 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 条评论