答案1
你的前提是不正确的。 Windows 中“终端”的角色或多或少是由 conhost.exe 扮演的 - 控制台子系统的设计方式并不像 Linux 中的终端那样可互换(并且还有其他差异,例如,当您启动控制台模式进程(例如尚未附加到控制台的 cmd.exe )时,启动该进程的系统库将负责为您创建一个),但它是由单独进程管理的单独层。
答案2
我想说 1)因为历史,2)因为这是一个好主意。
通常我们调用gnome-terminal
或xterm
终端模拟器。过去,没有终端模拟器,因为没有图形用户界面。一切都是正确的终端、通过串行电缆连接的带有屏幕和键盘的设备到计算机。 Shell 在当时也很有用,并且被编写为支持从终端获取命令。 (可能来自任意文件描述符,但这并不重要。)
对于 Linux 虚拟终端和 GUI 之类的东西,让它们模拟原始终端是很有用的,这样旧的软件就可以正常工作,或者至少可以进行最小的更改。这不仅意味着 shell,还意味着与“终端”接口的其他程序。 (ls
???)vi
emacs
此外,分离也是一个好主意,因为它允许人们独立地交换终端仿真器和 shell。我可以在 xterm 上使用 Bash,或者在 gnome 终端上使用 zsh,或者通过 SSH 连接使用 Bash,或者...
如果将各个部分捆绑在一起,这个选择就会更加困难。
顺便说一句,我也不太确定cmd.exe
终端仿真部分本身的实现。我已经有一段时间没有接触过 Windows 上的编译器了,但如果我没记错的话,可以在不涉及cmd.exe
.看这里和这里。
答案3
gnome-terminal
bash
将作为默认应用程序 运行,但是xterm
和gnome-terminal
系列旨在运行任意命令,而不仅仅是 shell,您可以运行例如:
xterm -e /bin/bash
xterm -e /usr/local/bin/fish
xterm -e tail -f /var/log/messages
xterm -e man ls
在最后一种情况下,xterm 将显示 ls 手册页,如果我退出,xterm
将退出。
对于 /var/log/messages,我可能会使用 xterm 选项来设置字体或更改颜色。
请注意,gnome-terminal
还使用-e
语法来运行命令。
答案4
我认为,因为在Linux中你可以有多个shell(bash ksh ....)
在Windows中只有1个程序,cmd。现在微软需要 2 个程序来添加更多功能(power shell)
在Linux中只需更改shell即可提高您的要求