Linux

像 Nautilus 這樣的程序是否使用 shell?

  • December 9, 2019

據我了解,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 腳本進行啟動或其他操作。

引用自:https://unix.stackexchange.com/questions/421785