shell 中的實用程序依賴
我知道任何 *nix 作業系統的“層”架構都是 kernel-shell-utility(“從內到外”)。
如果我們安裝了 Debian-Server 並附帶了一些 CLI 實用程序,
那麼所有這些實用程序是否應該與所有 shell(Bash、Dash、Korn 等)都一樣?
換句話說,Linux 實用程序(我假設它依賴於核心)是否也依賴於 shell?
我知道任何 *nix 作業系統的“層”架構都是 kernel-shell-utility(“從內到外”)。
它不是。一切都在核心之上執行,非 shell 腳本的“實用程序”不需要 shell,因此不依賴於特定的 shell。
有些程序確實需要其他程序,例如 Wayland 客戶端需要 Wayland 合成器。但是沒有涉及貝殼的一般分層。
我假設“shell”是指您用作 Unix 系統登錄 shell 的特定 shell。
您機器上的軟體很可能依賴於特定的shell,但它不會依賴於您用作個人登錄shell 的shell(即它不會僅僅因為它是您的登錄shell 而依賴於登錄shell)。
碰巧作為腳本(或部分作為腳本)實現的實用程序可能會使用 eg或其他一些 shell 來執行某些操作,但如果您的登錄 shell 是、or或一些更深奧的 shell
/bin/sh
,它將以完全相同的方式工作,就像 Python 腳本對每個人都一樣,無論他們使用什麼 shell。bash``zsh``yash
請記住,Unix 是一個多使用者作業系統,因此,無論使用者使用什麼命令行 shell(“管道”,即啟動實用程序的語法),命令行實用程序和圖形應用程序都可以正常工作, 可能略有不同,但在任何使用者的 shell 中都是一致的)。
有關使用shell 腳本的實用程序範例,請參見例如
firefox
某些系統上的執行檔(這可能是啟動實際firefox
二進製文件的 shell 腳本)。某些類型的編譯器,例如 OpenMPI,被實現為圍繞實際編譯器的 shell 腳本包裝器。同樣,無論使用者使用什麼 shell 作為他們的登錄 shell,執行此操作的程序都可以正常工作。另一方面,為 eg 編寫的 shell 腳本在由另一個 shell 執行時
zsh
*將無法可靠地工作。*這應該不足為奇,因為用另一個解釋器替換任何腳本的解釋器很可能會破壞該腳本(例如,使用 Ruby 解釋器執行 Perl 腳本很可能會失敗)。