为什么终端和 Shell 在 Linux 中是两个独立的程序?

0 shell terminal

在 Windows 中,使用 CLI 时,只使用一个程序 ( cmd.exe)。您将输入发送到cmd.execmd.exe然后将输出发送给您(在屏幕上显示输出):

在此处输入图片说明

但是在 Linux 中,使用了两个程序:终端和外壳。

您发送的输入端子(例如:gnome-terminal),并gnome-terminal依次发送该输入壳牌(例如:bash),然后bash将输出发送到gnome-terminal,并gnome-terminal反过来发送你的输出。

在此处输入图片说明

我的问题是:为什么终端和 Shell 在 Linux 中是两个独立的程序,而不是像 Windows 中的一个程序?

Ran*_*832 5

你的前提是不正确的。Windows 中“终端”的角色或多或少由 conhost.exe 扮演 - 控制台子系统的设计方式并非像 Linux 中的终端那样可互换(还有其他差异,例如,当您启动控制台模式进程(例如 cmd.exe 尚未附加到控制台时,启动该进程的系统库将负责为您创建一个),但它是由单独进程管理的单独层。