Linux
像 Nautilus 這樣的程序是否使用 shell?
據我了解,bash 是一個類似於 python 互動式 shell 的程序,它通過輸入流接收命令(或命令),通過呼叫 Linux API 函式執行它們,並將執行結果提供給輸出流。
Terminal 也是一個為我們提供命令歷史記錄和高亮顯示等功能的程序,它在內部使用 shell(bash)。
但是應用程序(如 Nautilus)是使用 /bin/bash 還是使用它的 API 與 linux 通信?
是的,程序可能會顯式或隱式地使用 shell。
參見例如Stéphane對不相關問題的回答。
例如,他們的回答是,如果程序使用 C 庫函式
execlp()
或execvp()
執行命令,則在execve()
返回ENOEXEC
時通常會呼叫sh
它(“it”是一個沒有指定顯式解釋器的 shell 腳本,這是那個的上下文問題)。sh
是一個殼。用於執行實用程序的應用
system()
程序通常也會呼叫 shell。我不能具體說 Nautilus,但如果它允許您執行任何類型的腳本,它很可能使用 shell 來執行此操作。應用程序的其餘部分可能會使用用於 GUI 元素的庫和用於事件、文件系統操作等的其他庫。這些庫很可能是用 C 或類似語言編寫的,並使用 C 庫,其中一些與作業系統核心介面對於一些操作。
我非常懷疑文件管理器本身是用任何類型的 shell 腳本語言編寫的,儘管它很可能使用shell 腳本進行啟動或其他操作。