Aus dem Kurs: Linux-Befehlszeile Grundkurs

Wie funktioniert die Shell? – Tutorial zu Linux

Aus dem Kurs: Linux-Befehlszeile Grundkurs

Wie funktioniert die Shell?

Was passiert, wenn ich in der Bash einen Befehl und einen Befehl mit einem Argument ausführe. Dieser Frage gehe ich in diesem Video nach. Was passiert wenn ich in meinem Terminal einen Befehl eingebe und die Enter-Taste drücke, wie zum Beispiel ls. Was passiert eigentlich genau. Die Shell abarbeitet immer Linie für Linie. Wenn sie einen Befehl eingeben und dann die Enter-Taste drücken, wird dies von der Shell übersetzt. Wenn ich nur cd eingebe und nichts weiter passiert folglich nichts. Was passiert aber, wenn ich einen Befehl eingebe wie z.B. hophop? Es dauert einen kurzen Moment, Sie haben gesehen und die Shell versucht ausfindig zu machen, was das ist, findet aber nichts und aus Ausgabe erhalte ich "Befehl nicht gefunden". Was definiert nun eigentlich einen Befehl, wie z.B. den Befehl cd. Alle Zeichen bis zum ersten Leerschlag, also wenn ich jetzt cd eingebe? Bis zum Leerschlag jetzt in diesem Moment wird für die Shell als Befehl übersetzt. Wie findet die Shell die Befehle? Dazu verwendet die Shell die Umgebungsvariablen in spezifischen die Variable Dollar, path. Schauen wir uns diese Variable einmal genauer an. Echo, dann das Dollarzeichen und path. Und Sie sehen, die Shell sucht sämtliche ausführbare Dateien in diese Liste. Diese Verzeichnisse werden von der Shell durchlaufen außer cd z.B. wird von der Shell durchlaufen, ist cd user local bin, ist user local bin, ist user s bin, ist user s bin und so weiter, Sie verstehen was da genau abläuft. cd ist jetzt ein bisschen ein spezieller Befehl, weil das ist ein sogenannter Build in Befehl. Das kann ich Ihnen zeigen, indem ich den Befehl type verwende und Abstand cd. Und Sie sehen, cd ist eine von der Shell mitgelieferte Funktion. Da muss die Shell nicht diese Variable durchgehen. Wenn ich aber einen anderen Befehl einsetze z.B. type und less und Sie sehen less ist in dieser Lokation abgelegt. Das bedeutet also, wenn ich less eingebe, dann geht die Shell in diese Variable und sucht den Pfad user bin. Und das wird die Shell entsprechend finden und Sie sehen hier ist dieser Pfad hinterlegen. Aus diesem Grund kann ich less eingeben und die Shell kann diese Funktion übersetzen. Was also passiert wenn ich einen Befehl eingebe wie z.B. cd und dann Abstand und das Tilde-Zeichen. Was passiert wenn ich diesen Befehl eingebe? Man könnte meinen cd übergibt ein Argument mit Tilde. Das ist aber nicht richtig. Die Shell übersetzt die Linie vor dem Befehl, schauen wir uns an was wirklich genau passiert. Dazu verwende ich einen Debug-Modus. Ich wähle set und dann Minus x. Und nun verwende ich cd, Abstand und nochmals diese Tilde. Und Sie sehen, diese Tilde wird zuerst übersetzt in Slash home Slash Tom und anschließend wird cd aufgerufen. Ich habe jetzt in meinem Fall kein Verzeichnis gewechselt, ich bin in meinem Verzeichnis geblieben, weil ich habe ja den Befehl change directory in mein home-Verzeichnis aufgerufen. Da hat also kein Wechsel stattgefunden in ein anderes Verzeichnis. Es ist nun aber ersichtlich, dass die Shell zuerst die Tilde auflöst bzw. übersetzt und dann cd ausgeführt wird. Das Sehen wir auch, wenn wir wiederum diese Variable aufrufen, Dollar, path z.B., dann sehen Sie, es wird zuerst diese Variable aufgelöst, Sie sehen das hier, wird die Variable aufgelöst. Anschließend wird diese aufgelöste Variable an Echo übergeben und ich erhalte mit Echo das Resultat in der zweiten Linie. Sie sehen also, es wird zuerst das Argument übersetzt, anschließend der Befehl ausgeführt. Ich wähle cd dann Dollar, home. Wiederum ein sehr gutes Beispiel. Zuerst wurde die Variable home aufgelöst, übersetzt, Sie sehen das hier. Anschließend an die Funktion, an den Befehl cd übergeben und dieser Befehl wurde dann ausgeführt. Allerdings bin ich wieder in meinem home-Verzeichnis, darum habe ich keinen Verzeichnis gewechselt. Mit diesen drei Beispielen ist ersichtlich, dass zuerst die Variable übersetzt werden oder die Argumente übersetzt werden und anschließend der Befehl ausgeführt wird. In diesem Video habe ich Ihnen die Funktion der Bash noch etwas genauer erklärt.

Inhalt