Die meisten Linux-Benutzer sind sich der internen Funktionsweise des Betriebssystems oft nicht bewusst. Sie führen vielleicht schon seit langer Zeit Linux-Befehle auf der Shell aus, aber haben Sie sich jemals gefragt, was hinter den Kulissen passiert, wenn Sie auf drücken? Eintreten?

Am Ende haben Sie ein kurzes Verständnis davon, wie die Shell den eingegebenen Befehl unter Linux verarbeitet.

Verarbeitung des Befehls

Wenn Sie einen Befehl eingeben, zerlegt die Shell als erstes den gesamten Befehl in "Token". Die Shell sucht dann nach einem Programmnamen, der zum ersten Token in der Befehlszeile gehört.

Wenn es in keinem der Verzeichnisse im Suchpfad gefunden wird, der in definiert ist die Umgebungsvariable $PATH oder im lokalen Verzeichnis mit dem .\ Operator, oder es ist kein Shell-Alias oder Shell-Funktion, gibt die Shell einen Fehler aus. Wenn sie einen gültigen Befehl findet, geht die Shell dann alle anderen Token durch und entscheidet, ob es sich um eine Variable, einen Shell-Parameter oder ein Argument für den Befehl handelt.

Wenn die Shell feststellt, dass es sich um eine Variable oder einen Parameter wie die ~ Operator für das Home-Verzeichnis, erweitert die Shell sie oder ersetzt sie durch ihre ursprünglichen Werte im Befehl.

Wenn die Shell Parameter oder Variablen erweitert hat, übergibt sie die Befehlszeichenfolge an den Befehl und führt das Programm mit seinen Argumenten aus. Die Shell bestimmt nicht, ob irgendwelche Argumente gültig sind. Das ist die Aufgabe des Kommandos.

Ausführen des Befehls

Wenn die Shell einen anderen Befehl startet, wie kehrt sie dann zu derselben Eingabeaufforderung zurück, die Sie zuvor verwendet haben? Die Shell erstellt eine Kopie von sich selbst, ein Prozess namens Forking. Diese Kopie der Shell ersetzt sich selbst durch den Befehl mit allen zuvor verarbeiteten Argumenten. Dies wird als "Exec" bezeichnet, und der kombinierte Prozess wird als "Fork-and-Exec" bezeichnet.

Zum Beispiel, wenn du rennst der ls-Befehl, wird sich der Shell-Prozess mit dem Gabel() -Methode und erstellen Sie eine weitere Shell-Instanz. Von den beiden Shell-Prozessen, die auf dem System ausgeführt werden, führt die zusätzliche Shell ls mit dem exec() -Funktion, die sich selbst in eine Instanz des ls-Befehls verwandelt.

Währenddessen wartet die ursprüngliche Shell, bis der Befehl abgeschlossen ist. Aus diesem Grund können Sie mit der Jobsteuerung Jobs anhalten und Jobs im Hintergrund in der Shell ausführen lassen.

Verwandt: Was ist ein Prozess in Linux?

Melden des Exit-Status

Linux-Befehle melden über ihren Exit-Status, ob sie erfolgreich ausgeführt wurden oder nicht. Wie der Name schon sagt, melden Programme ihren Exit-Status, wenn sie ihre Ausführung beenden. Sie tun dies durch die $? Umgebungsvariable, die den Beendigungsstatus des letzten Ausführungsbefehls enthält.

Konventionell bedeutet ein Exit-Status von 0 eine erfolgreiche Ausführung, während alles andere als 0 normalerweise einen Fehler bedeutet. Je nachdem, wie Ihre Eingabeaufforderung konfiguriert ist, zeigt Ihre Shell möglicherweise auch einen Exit-Status ungleich Null in der Befehlszeile an.

Der obige Screenshot ist ein Beispiel, das eine benutzerdefinierte Zsh-Eingabeaufforderung zeigt, die aufgrund eines nicht vorhandenen Befehls einen Fehlerbeendigungsstatus von 127 anzeigt.

Jetzt wissen Sie, wie Linux-Befehle funktionieren

Da Sie nun wissen, wie die Linux-Shell einen Befehl verarbeitet, sich verzweigt und ausführt und wie Programme ihren Exit-Status melden, können Sie die Befehlszeile effektiver nutzen.

Den Nutzern stehen mehrere Linux-Shells kostenlos zur Verfügung. Obwohl jeder von ihnen mehr oder weniger die gleiche Arbeit verrichtet, unterscheiden sie sich in vielerlei Hinsicht. Sie können versuchen, einige der Shells auf Ihrem System zu installieren und selbst entscheiden, welche am besten zu Ihnen passt.

TeilenTweetEmail
Welche Linux-Shell ist am besten? 5 gängige Muscheln im Vergleich

Suchen Sie nach einer Linux-Bash-Shell-Alternative? Hier ist eine Übersicht, welche Linux-Shell die beste ist: tsch, fish, KornShell und Z-Shell.

Weiter lesen

Verwandte Themen
  • Linux
  • Linux-Befehle
  • Linux-Bash-Shell
Über den Autor
David Delony (57 veröffentlichte Artikel)

David ist ein freiberuflicher Autor mit Sitz im pazifischen Nordwesten, stammt jedoch ursprünglich aus der Bay Area. Er ist seit seiner Kindheit technikbegeistert. Davids Interessen sind Lesen, Ansehen hochwertiger Fernsehsendungen und Filme, Retro-Spiele und das Sammeln von Schallplatten.

Mehr von David Delony

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren