![Unix 中有两种类型的“Shell”吗?](https://linux22.com/image/8976/Unix%20%E4%B8%AD%E6%9C%89%E4%B8%A4%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E2%80%9CShell%E2%80%9D%E5%90%97%EF%BC%9F.png)
作为一个真正想要了解 Linux 而不仅仅是自动使用它的 Linux 新手,我理解术语“Shell”基本上描述了内核之上的软件层,其中包括可以运行和操作的服务公用事业比内核更“容易”。
如果我理解正确的话,Web 服务器软件(例如 Apache、MySQL 和 PHP)是用“高级”编程语言编写的,可以使用 shell 软件块作为“Web 服务器”一起运行,以便软件从两层会危及“Web 服务器”。
如果是这样,这个名为“Shell”的软件层与我在 Ubuntu 中使用的终端有什么区别维基百科也称为 Shell?
在我看来,Linux 中的“Shell”一词要么有两个“上下文”,要么终端(例如 Bash 终端)被某些用户错误地称为“Shell”。
答案1
Aterminal
是允许您连接到另一个系统的设备或应用程序。当您在 Unix 上进行此类连接时,您将连接到shell
.
shell 是一个允许用户执行各种操作(包括运行其他程序)的应用程序。请注意,大多数程序不需要 shell 的存在。 shell 的存在只是为了用户控制。
因此,shell
出现在 内部,terminal
但并未从中运行。
最后请注意,实际上有许多不同的终端模拟器和贝壳。
答案2
“Shell”和“Terminal”经常互换使用。
不同之处在于,您在 Ubuntu 中打开的终端是一个终端模拟器。您的系统只有一个实际的“终端”或“外壳”,不同的模拟器通过它进行交互。
Bash只是一种与内部shell交互的语法,就像fish、zsh等一样。