答案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即可提高您的要求