每个程序是否都必须通过shell来完成他们愿意制作的过程?

我在某处看到“bash用于与Linux内核通信”。

它只适用于终端吗? 或者每个程序(包括具有GUI的程序)是否必须通过shell来完成他们愿意制作的过程?

(考虑一下我们正在为一张照片着色.bash如何知道我们在做什么?gimp和bash之间是否有第三方将它们转换为bash?)

如果你能举一个例子解释:)真的很有帮助:)

不。 只有用户必须通过shell与内核进行通信。 应用程序使用API 。

例如,如果我想删除一个文件,我必须使用一个shell或另一个,然后一个应用程序删除该文件:

  1. 使用命令行界面(CLI)shell,例如bash ,我可以使用rm命令删除该文件。
  2. 使用GUI shell(如Unity或GNOME Shell),我可以使用其他东西,例如文件管理器来删除文件。 反过来,GUI shell不需要使用CLI shell。

文件管理器和rm都可以使用unlink(3) (或更高级别的remove(3) )函数(或系统调用 )来完成实际工作。