据我了解,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 脚本。