我剛開始在 Windows 7 上使用 Cmder,我知道這是一個 Windows 控制台模擬器,它比使用 cmd 提供更好的體驗。然而,據我了解,模擬器需要運行 shell 才能將使用者命令傳達給作業系統,那麼在 Windows 上,這裡的 shell 是什麼? CMD 是 Windows 的預設 shell 嗎?
如果您了解這些工具是如何連接的,我們將不勝感激。
答案1
Windows 內建了兩個命令列 shell:Cmd.exe 和 PowerShell 5。命令shell,不適用於該問題。
Cmder預設使用Cmd.exe,但是重重地自訂它 – 您看到的實際互動式提示不是正常的 Cmd.exe 提示;它由 ConEmu 顯示clink
,它被注入到 Cmd 進程中。 (整個“Cmder”視窗實際上是康埃穆.)
因此,從技術上講,您的所有命令仍然透過 Cmd 運行,但注入的 Clink 庫提供了高級功能,例如製表符補全和類似 Readline 的鍵綁定。
但除了 Cmd.exe 之外,還可以運行任何其他外殼在 Cmder 中,例如 PowerShell 或 Bash(不是 Windows 的一部分,但在 Linux 上是標準的,通常也會與 Git For Windows 一起安裝)。
然而,據我了解,模擬器需要運行 shell 才能將使用者命令傳達給作業系統
從某種意義上說是的,儘管 shell 不一定只是「執行」命令(任何進程都可以隨時啟動任何 .exe 檔案;這就是人們首先創建 shell 的方式);相反,他們的工作是解釋命令 – 它們提供諸如 if/for/while 循環、%variable% 擴展等功能。1
(所以理論上,一個終端可以顯示自己的提示並實現自己的命令語言,只是很少這樣做,因為大多數人都非常習慣 Bash 語法。
1(這適用於 Windows 和所有類別 Unix 系統,但不一定適用於全部作業系統.例如,OpenVMS中的DCL命令shell實際上比普通程式具有更高的特權,就像當時許多作業系統的情況一樣——很可能是Unix打破了傳統,它的shell是一個完全正常且可替換的工具。