GUI 是否代表一种单独的 shell?

GUI 是否代表一种单独的 shell?

当我安装一些带有 GUI 的 Linux 发行版时,它们附带了 shellshBash. CLI 允许您通过sh和来操作系统Bash,但是 GUI 呢? GUI 是否允许您操作系统shBash或者它有自己的 shell 来在您和内核之间进行中介?

答案1

在计算术语中,外壳是操作系统的最外层,IE操作系统中与用户交互的部分。 (另请参阅 JdeBP 的对超级用户的精彩阐述.) 因此,在 Windows 上,典型的 shell 是 Explorer(管理桌面);在不同版本的 Mac OS 上,它是查找器;在 Unix 风格的系统上,它是用户配置为系统主要界面的任何内容(可以是/bin/bash、 或、或控制台中的/bin/ksh其他内容、或 GNOME、或 Looking Glass、或 CDE、或,这样的例子不胜枚举)等等)。/bin/*shtwm

然而,许多读者会提到 POSIX,其中 shell 有一个具体定义

shell 是一个命令语言解释器。

...具有特定的语法和命令,全部在 POSIX 中定义,并通过当今常见的 shell 实现进行不同的扩展。

这两类 shell 使用相同类型的方法与内核交互,至少在 Unix 风格的系统上是这样:它们最终使用系统调用,尽管通常由某种库(C 库)包装。这是内核和所有正在运行的程序之间的中央命令接口,包括各种类型的 shell:Bash 使用系统调用、GNOME Shell 使用系统调用、Nautilus 使用系统调用等。GUI 可以完全在不使用/bin/sh.

(当人们意识到典型 GUI 的各种组件可以使用不同的工具(当然包括“CLI”shell)来实现时,所有这一切最终都会变得有些混乱——因此 Linux GUI 的某些部分通常是使用 来实现的/bin/sh,但它们并没有t成为。)

相关内容