shell und GUI

25.11.2016 01:30 Uhr

Desktop Environment – GUI (Graphical User Interface)

Was macht ein modernes GUI (Graphical User Interface) aus?
(touch)Funktionen wie Copy & Paste, Kontextmenüs, einheitliches Look & Feel, Drag & Drop, Desktop Panel – alles Dinge, die wir tagtäglich mit Selbstverständlichkeit nutzen

Dazu wurden die Desktop Environments oder Desktopumgebungen ins Leben gerufen. Desktopumgebungen bringen darüberhinaus eine ganze Ansammlung nützlicher Anwendungssoftware bereits mit (z.B. Web-Browser, Office-Paket, Spiele, Editor…), und bilden somit ein ganzes Software-Bundle. Zudem verwenden sie einheitliche Grafikbibliotheken (GUI-Toolkits), mit denen diese Anwendungen programmiert sind, was einerseits das Aussehen für den Anwender gefällig macht, anderseits dem Programmierer eine Menge Arbeit abnimmt.

Die beiden wohl verbreitetesten Desktopsysteme sind
* Unity (Ubuntu)
* KDE (Kool Desktop Environment), basierend auf dem GUI-Toolkit QT
(* Gnome (GNU Network Object Model Environment), basierend auf dem GUI-Toolkit GTK)

Desktop Environments werden mit jeder größeren Distribution mitgeliefert und gleichen sich sehr im Funktionsumfang.

Die Shell

Ein Mittler zwischen Benutzer und Betriebssystem-Kern

Weil die direkte Kommunikation mit dem Betriebssystem-Kern für einen Benutzer viel zu komplex wäre, ist eine vereinfachte Benutzer-Schnittstelle erforderlich. Neben einer grafischen Schnittstelle wie dem X Window System wird diese Leistung vor allem von einer Shell bereitgestellt. Der englische Ausdruck Shell, zu Deutsch etwa Schale oder Ummantelung, drückt diesen Sachverhalt bereits aus. Die Übersetzung oder Symbolisierung als Muschel hat dabei wohl mehr mit Spieltrieb und Anschaulichkeit als mit einem echten technischen Hintergrund zu tun. Jedenfalls lässt sich eine Shell als eine Schicht zwischen Betriebssystem und Benutzer verstehen:

Funktionsweise einer Shell; Grafik Rolf Brunsendorf
Während Benutzer, die noch nicht häufig mit Kommandozeile und Shells in Berührung gekommen sind, den wartenden Eingabeprompt einer Shell abweisend empfinden mögen, wurden Shells doch mit der gegenteiligen Absicht entwickelt: Sie sollten die tägliche Arbeit vereinfachen und erleichtern!!

Die Interpretation der Kommandozeile
Die Hauptaufgabe einer Shell besteht darin, Kommandos entgegenzunehmen und das Betriebssystem um ihre Ausführung zu bitten. Das klingt einfach, stößt aber in der Praxis auf besondere Probleme und Anforderungen. Eine Shell hat daher zunächst eine Interpretation der Kommandozeile zu leisten. Sie interpretiert einzelne Zeichen oder Worte der Eingabe und ersetzt sie ggf. durch neue Zeichen oder Worte.

Die Kombination von Kommandos
Häufig ist es nicht nur ein einzelnes Kommando, das ausgeführt werden soll. Kommandos können so miteinander verbunden werden, dass die Ausgabe eines Kommandos zur Eingabe eines weiteren Kommandos wird. Auch wiederholte oder bedingte Ausführungen in Form von Schleifen und wenn – dann-Konstrukten sind wünschenswert und werden daher von vielen Shells ermöglicht. Und schließlich möchte man häufig eine bestimmte wiederkehrende Folge von Kommandos ausführen lassen, die man daher in einer Datei niederschreibt und für die spätere Ausführung abspeichert. Die Konfiguration eines Linux-Systems erfolgt häufig über solche Dateien, die als Shell-Skripte bezeichnet werden.

Unterschiedliche Shells
Im Laufe der Zeit wurden unterschiedliche Shells entwickelt. Je nach Erfahrungshintergrund bevorzugen Anwender einzelne Shells, die es ihnen besonders gut ermöglichen, ihre jeweiligen Ziele zu erreichen. Die oben beschriebenen Anforderungen werden zwar von jeder Shell erfüllt, gelegentlich können jedoch besondere Anforderungen wie beispielsweise besonders komfortable Programmierbarkeit, Unterstützung spezieller Programmier-Konstrukte oder Kompatibilitätserwägungen eine Rolle bei der Auswahl der Shell spielen.
Die Mutter aller Shells stellt gewissermaßen die Bourne Shell dar. Unter Unix darf man sicher sein, zumindest eine mit der Bourne Shell kompatible Shell anzutreffen, und die meisten Skripte sind auch heute noch in der Bourne Shell-Syntax gehalten. In der Linux-Welt ist zweifellos die Bourne Again Shell (bash) am weitesten verbreitet, die zur Bourne Shell aufwärtskompatibel ist und darüber hinaus zahlreiche Erweiterungen erfahren hat. Aber auch andere Shells wie etwa die C-Shell (csh) und ihre Nachfolger sowie ash oder zsh sind in der Praxis immer wieder anzutreffen. Wenn keine besonderen Anforderungen eine Rolle spielen, ist die bash für den Einstieg eine gute Wahl.

 

DER Unterschied zu Window-Systemen

DER wichtige Unterschied zwischen Unix und Windows besteht in der Bedeutung der Shell-Verwendung. In den Zeiten von MS-DOS wurden Befehle noch am DOS-Prompt eingetippt und ausgeführt. Mit Windows hat sich dies grundlegend geändert. Fast alle Programme werden mittels Mausklick ausgeführt. Es existiert zwar noch ein DOS-Fenster, doch dieses hat fast keinerlei Bedeutung mehr.

Unter Unix stellt die Shell nach wie vor ein sehr wichtiges Arbeitsmittel dar. Alle Programme können von dort gestartet werden. Die unter Unix verfügbaren Shells sind weit mächtiger als die Shell des Kommandozeilenfensters unter Windows.

Selbst wenn überwiegend unter der grafischen Benutzeroberfläche gearbeitet wird, kann man sehr oft nicht auf eine Shell verzichten!!!