就目前而言,我将 CLI(命令行界面)与rbash
、bash
、dash
或一起使用sh
。鉴于这一事实,我们可以假设 CLI不是shell 相关,即使我们删除所有这些 shell,我们也可以使用一些原始/基本/超限制的 CLI。
我的问题
如果我在无 GUI 操作系统中删除所有上述 shell,我还会有某种原始的 CLI 吗?
笔记
我认为 CLI 不会成为内核的一部分,因为据我了解,内核通常只能通过代理访问,就像 shell 一样)。
我也在考虑 tmux 和 screen,但将它们从标题和问题中删除了。
答案1
不。您认为这些不同的 shell 都运行在一些更基本的 CLUI 之上,因为它们都非常相似,这是不正确的。每个 shell 都单独实现一个到内核的 CLI 接口,它们看起来都有些相似(因为它们都是“Unix”shell,或多或少严格遵守公认的标准,并且它们都运行在相同类型的终端设备上) 。 CLUI 分别编码到每个 shell 程序中 - 它们都是独立的并且不共享某些底层 CLUI。
如果你删除所有的shell,那么你将没有CLUI。这让小企鹅哭了:(
答案2
有两个答案:是和否:
不
如果删除 shell,系统将停止工作。 shell 被广泛使用,用于一些非常重要的事情。例如,但绝不限于:登录程序将由 shell 脚本启动(其他所有内容也由 shell 脚本启动,用于此目的的 shell 通常是sh
)。因此,如果没有 shell,则无法登录。即使您登录到非 shell 环境。
是的
正如您所确定的,有不同的组件:
- 一个内核(例如Linux、BSD内核、cygwin),
- 虚拟终端/终端仿真器(例如
konsole
,xterm
Linux 控制台), - 多路复用器(例如
screen
,tmux
), - shell(例如
bash
、dash
、csh
在 shell 中运行的程序(例如ls
、grep
)。
您可以更改其中任何一个,并以不同的组合使用它们。