Muss jedes Programm die Shell durchlaufen, um den gewünschten Vorgang abzuschließen?

Muss jedes Programm die Shell durchlaufen, um den gewünschten Vorgang abzuschließen?

Ich habe irgendwo gelesen, dass „Bash zur Kommunikation mit dem Linux-Kernel verwendet wird.“

Gilt dies nur für das Terminal? Oder muss jedes Programm (einschließlich Programme mit GUIs) die Shell durchlaufen, um den gewünschten Vorgang abzuschließen?

(Nehmen wir an, wir kolorieren ein Foto. Woher weiß Bash, was wir tun? Gibt es zwischen Gimp und Bash eine dritte Partei, die sie in Bash konvertiert?)

Es wäre wirklich hilfreich, wenn Sie es anhand eines Beispiels erklären könnten :)

Antwort1

Nein. Nur Benutzer müssen über eine Shell mit dem Kernel kommunizieren. Anwendungen verwendenAPIs.

Wenn ich beispielsweise eine Datei löschen möchte, muss ich die eine oder andere Shell und dann eine Anwendung zum Löschen der Datei verwenden:

  1. Mit einer Command-Line Interface (CLI)-Shell wie kann ich den Befehl zum Löschen der Datei bashverwenden .rm
  2. Mit einer GUI-Shell (wie Unity oder GNOME Shell) kann ich etwas anderes verwenden, beispielsweise den Dateimanager, um die Datei zu löschen. Die GUI-Shell wiederum muss keine CLI-Shell verwenden.

Sowohl der Dateimanager als auch der Dateimanager rmkönnen wiederum die unlink(3)(oder die übergeordnete remove(3)) Funktion (oderSystemaufruf), um die eigentliche Arbeit zu erledigen.

verwandte Informationen