1.2 Was ist eine Shell?
Für den einen ist eine Shell nichts anderes als ein besseres »command.com« aus der MS DOS-Welt. Ein anderer wiederum bezeichnet die Shell lediglich als Kommandozeile, und für einige ist die Shell die Benutzeroberfläche schlechthin. Diese Meinungen resultieren daraus, dass der eine die Shell lediglich dazu verwendet, Installations- bzw. Konfigurationsscripts auszuführen, andere verwenden auch häufiger mal die Kommandozeile zum Arbeiten und die letzte Gruppe setzt die Shell ein, wie andere Anwender die grafischen Oberflächen benutzen.
Für den heutigen User besteht eine Benutzeroberfläche aus einem oder mehreren Fenstern, die man mit der Maus oder Tastatur steuern kann. Wie kann man (oder der Autor) also behaupten, die Shell sei eine Benutzeroberfläche? Genauer betrachtet, ist eine Benutzeroberfläche nichts anderes als eine Schnittstelle, welche zwischen der Hardware des Systems (womit der normale Benutzer nicht gern direkt zu tun haben will und dies auch nicht sollte) und dem Betriebssystem kommuniziert. Dies ist natürlich relativ einfach ausgedrückt, denn in Wirklichkeit findet eine solche Kommunikation meistens über mehrere abstrakte Schichten statt. Der Benutzer gibt eine Anweisung ein, diese wird interpretiert und in einen Betriebssystemaufruf (auch System-Call oder Sys-Call genannt) umgewandelt. Jetzt wird auf die Rückmeldung des Systems gewartet und ein entsprechender Befehl umgesetzt – oder im Fall eines Fehlers eine Fehlermeldung ausgegeben.
Hinweis Noch genauer gesagt durchläuft eine Eingabe der Kommandozeile einen Interpreter und ist somit praktisch nichts anderes als ein Shellscript, das von der Tastatureingabe aus, ohne zwischenzuspeichern, in einem Script ausgeführt wird.
|
Man spricht dabei auch von einem Systemzugang. Einen solchen Systemzugang (Benutzeroberfläche) können Sie als normaler Benutzer erlangen über die ...
|
Kommandozeile (Shell). Hierbei geben Sie in einem Fenster (bspw. xterm) oder häufig auch einem Vollbildschirm (eben einem echtem tty) über die Tastatur entsprechende Kommandos ein und setzen so die Betriebssystemaufrufe in Gang. |
|
grafische Oberfläche (Windowmanager wie X11, KDE, GNOME etc.). Auch hierbei geben Sie mit der Maus oder der Tastatur Anweisungen (Kommandos) ein, welche an der Betriebssystemebene ebenfalls nicht vorbeikommen. |
Hinweis Häufig wird die Kommandozeile als Shell bezeichnet. Diese Shell ist aber nicht gleichzusetzen mit dem »Interpreter« Shell. Der Interpreter ist die Schnittstelle, durch die überhaupt erst die Kommunikation zwischen der Ein-/Ausgabe und dem System möglich wird.
|
Auch wenn es auf den ersten Blick den Anschein hat, dass man über die grafische Oberfläche den etwas schnelleren und bequemeren Weg gewählt hat, so ist dies häufig nicht so. Je höher die Erfahrung des Anwenders ist, desto eher wird dieser mit der Kommandozeile schneller ans Ziel kommen als der GUI-gewöhnte Anwender.
Hurra, die ganze Arbeit war umsonst, KDE und GNOME benötigen wir nicht mehr und fliegen jetzt von der Platte! Nein, keine Sorge, ich will Sie keinesfalls von der grafischen Oberfläche abbringen, ganz im Gegenteil. Gerade ein Mix aus grafischer Oberfläche und Kommandozeile macht effektiveres Arbeiten erst möglich. Wie sonst wäre es z. B. zu realisieren, mehrere Shells gleichzeitig zur Überwachung zu betrachten bzw. einfach mehrere Shells gleichzeitig zu verwenden?
Lange Rede, kurzer Sinn: Eine Shell ist eine Methode, das System über die Kommandozeile zu bedienen.
Historisch interessierte User werden sich wohl fragen, wieso die Bezeichnung »Shell«, was soviel wie Muschel oder auch Schale bedeutet, verwendet wurde. Der Name wurde unter Linux/UNIX (eigentlich war zuerst UNIX da, aber auf diese Geschichte wird hier nicht eingegangen ...) verwendet, weil sich eine Shell wie eine Schale um den Betriebssystemkern legt. Vereinfacht ausgedrückt ist die Shell ein vom Betriebssystemkern unabhängiges Programm bei der Ausführung. Also ein simpler einfacher Prozess. Ein Blick auf das Kommando ps (ein Kommando, mit dem Sie Informationen zu laufenden Prozessen ermitteln können) bestätigt Ihnen das:
you@host > ps
PID TTY TIME CMD
5890 pts/40 00:00:00 bash
5897 pts/40 00:00:00 ps
Hier läuft als Shell bspw. die Bash – aber mehr zu den verschiedenen Shells und der Ausgabe von ps erfahren Sie etwas später.
Hinweis Gerade bei UNIX-Systemen wird hier wohl in den seltensten Fällen die Bash per Standard als Interpreter aktiv sein. Gewöhnlich wird meistens die Korn-Shell (ksh) als Standard-Interpreter aktiviert. Aber dies spielt im Moment noch keine Rolle.
|
Natürlich kann man die Shell nicht einfach als normalen Prozess bezeichnen, dazu ist sie ein viel zu mächtiges und flexibles Programm. Selbst der Begriff »Kommandozeile« ist ein wenig zu schwach. Eher schon würde sich der Begriff »Kommandosprache« eignen. Und wenn die Shell schon nur ein Programm ist, sollte erwähnt werden, dass sie auch jederzeit gegen eine andere Shell austauschbar ist. Es gibt also nicht nur die eine Shell, sondern mehrere – aber auch hierzu in Kürze mehr.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.
|