据我所知,bash是一个类似python交互式shell的程序,它通过输入流接收命令(或命令),通过调用Linux函数执行命令,并将执行结果提供给输出流。
终端也是一个程序,它为我们提供了一些功能,比如命令历史记录和高亮显示,内部它使用shell(bash)。
但是应用程序(比如Nautilus)是使用/bin/bash还是使用它的API与linux通信呢?
发布于 2018-02-04 11:26:46
是的,程序可以显式或隐式地使用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
复制相似问题