像 Nautilus 这样的程序使用 shell 吗?

像 Nautilus 这样的程序使用 shell 吗?

据我了解,bash是一个类似于python交互式shell的程序,它通过输入流接收命令(或多个命令),通过调用Linux API函数来执行它们,并将执行结果提供给输出流。

终端也是一个为我们提供一些功能的程序,例如命令历史记录和突出显示,其内部使用 shell(bash)。

但是应用程序(如 Nautilus)是否使用 /bin/bash 或者它们使用 Linux 的 API 进行通信?

答案1

是的,程序可以显式或隐式地使用 shell。

参见例如史蒂芬的回答一个不相关的问题。

例如,他们的答案是,如果程序使用 C 库函数execlp()execvp()运行命令,则在execve()返回时ENOEXEC通常会调用sh它(“它”是一个没有指定显式解释器的 shell 脚本,这是该命令的上下文)问题)。sh是一个外壳。

用于执行实用程序的应用程序system()通常也会调用 shell。

我无法具体介绍 Nautilus,但如果它允许您执行任何类型的脚本,它很可能使用 shell 来执行此操作。应用程序的其余部分可能会使用用于 GUI 元素的库以及用于事件、文件系统操作等的其他库。这些库很可能是用 C 或类似语言编写的,并使用 C 库,其中一些库与操作系统内核交互对于某些操作。

我非常怀疑文件管理器本身被写成在任何种类的 shell 脚本语言中,尽管它很可能使用用于启动或其他操作的 shell 脚本。

相关内容