我对“外壳”这个词很好奇。我想我知道它是什么(尽管“shell”和“终端”之间的区别仍然模糊),但是为什么选择“shell”这个词来描述这种类型的程序?
这可能看起来不重要,但通常当单词选择让我感到困惑时,它表明我的理解存在差距。
答案1
类比是坚果:外面是外壳,里面是内核。
答案2
也许因为它是表面,屏蔽了用户的内核?所以内核就是贝壳里的珍珠。
答案3
从http://en.wikipedia.org/wiki/Thompson_shell#History
“命令行解释器的名称“shell”以及使 shell 成为操作系统内核之外的用户程序的概念是在 Unix 的前身 Multics 中引入的。”
在维基百科兔子洞的更深处发现了这一点:“Louis Pouzin,为 Multics 中使用的命令语言引入了术语 shell”
我还没有完整地读过它,但他在这里写的内容可能会给你答案: http://www.multicians.org/shell.html
编辑:确实没有解释。他只是“创造”了这个词。这不是您所希望的有趣故事,是吗?
答案4
看起来答案就在这里:
历史记录:显然,最初的 Multics shell(意义 1)之所以如此命名,是因为它是一个 shell(意义 3);它不是通过启动单独的进程来运行用户程序,而是通过将程序动态链接到自己的代码中,将它们作为子例程调用,然后在返回时动态地取消链接。 VMS命令解释器仍然做类似这样的事情。
-维基百科
也就是说,“shell”是对 Unix 前身 Multics 如何运行程序的现实世界的一个很好的类比。