![GUI 是否代表一种单独的 shell?](https://linux22.com/image/121582/GUI%20%E6%98%AF%E5%90%A6%E4%BB%A3%E8%A1%A8%E4%B8%80%E7%A7%8D%E5%8D%95%E7%8B%AC%E7%9A%84%20shell%EF%BC%9F.png)
当我安装一些带有 GUI 的 Linux 发行版时,它们附带了 shellsh
和Bash
. CLI 允许您通过sh
和来操作系统Bash
,但是 GUI 呢? GUI 是否允许您操作系统sh
,Bash
或者它有自己的 shell 来在您和内核之间进行中介?
答案1
在计算术语中,外壳是操作系统的最外层,IE操作系统中与用户交互的部分。 (另请参阅 JdeBP 的对超级用户的精彩阐述.) 因此,在 Windows 上,典型的 shell 是 Explorer(管理桌面);在不同版本的 Mac OS 上,它是查找器;在 Unix 风格的系统上,它是用户配置为系统主要界面的任何内容(可以是/bin/bash
、 或、或控制台中的/bin/ksh
其他内容、或 GNOME、或 Looking Glass、或 CDE、或,这样的例子不胜枚举)等等)。/bin/*sh
twm
然而,许多读者会提到 POSIX,其中 shell 有一个具体定义:
shell 是一个命令语言解释器。
...具有特定的语法和命令,全部在 POSIX 中定义,并通过当今常见的 shell 实现进行不同的扩展。
这两类 shell 使用相同类型的方法与内核交互,至少在 Unix 风格的系统上是这样:它们最终使用系统调用,尽管通常由某种库(C 库)包装。这是内核和所有正在运行的程序之间的中央命令接口,包括各种类型的 shell:Bash 使用系统调用、GNOME Shell 使用系统调用、Nautilus 使用系统调用等。GUI 可以完全在不使用/bin/sh
.
(当人们意识到典型 GUI 的各种组件可以使用不同的工具(当然包括“CLI”shell)来实现时,所有这一切最终都会变得有些混乱——因此 Linux GUI 的某些部分通常是使用 来实现的/bin/sh
,但它们并没有t有成为。)