Bearbeiten · Veränderungen zeigen · Druckansicht ·

Shell

Die Shell ist ein Kommandointerpreter auf einem Unix?- bzw. Linuxsystem. Ein Kommandointerpreter ist ein Programm, welches Kommandos (Befehle) direkt oder indirekt (über Shell-Skripte zum Beispiel) entgegen nimmt und sich um deren Ausführung auf dem System kümmert. Eine Shell ist also zuständig für die Interaktion eines Benutzers mit seinem Betriebssystem. Wird ein Kommando eingegeben, so leitet die Shell die wichtigsten Instruktionen an den Kernel? weiter, der sich wiederum um Interaktion mit der Hardware (z. B. Eingabe, Ausgabe) kümmert usw. (Bis es schließlich zur Ausgabe eines Ergebnisses auf der Shell kommt... oder auch nicht)

Verschiedene Kommandointerpreter

Es gibt nicht nur die Shell: Im Laufe der letzten 30 Jahre, in denen sich Unix und Linux entwickelt haben, kamen viele verschiedene "Geschmacksrichtungen" von Kommandointerpretern in Umlauf. Die allererste Shell, wenn man dieses Programm von 1973 schon so nennen kann, war die osh. Die erste wirklich populäre Shell war die sh (kurz für Bourne Shell, nach ihrem Entwickler Stephen Bourne). Daraufhin folgten viele verschiedene Weiterentwicklungen der bereits existierenden Kommandointerpreter. Es gibt zum Beispiel seit vielen Jahren eine Shell, deren Befehlssyntax sich an die Programmiersprache C anlehnt, die csh (C-Shell, oder neuer tcsh). Ebenso wurde die Bourne Shell weiterenwickelt, mittlerweile ist die bash (kurz für Bourne again shell) auf fast jedem Linuxsystem der standardmäßig eingestellte Kommandointerpreter. Viele Benutzer kennen nur die bash, wenigen ist bewusst, dass es noch dutzende anderer Shells gibt.

Fähigkeiten

Die meisten Shells im Unix-Bereich haben einen immensen Funktionsumfang. Das liegt daran, dass die meisten Kommandointerpreter - bewusst - an diverse Programmiersprachen angelehnt oder sogar nahezu vollkommen kompatibel zu jenen Sprachen sind. Wie bereits erwähnt existieren Shells wie die tcsh, die von der Syntax her der Programmiersprache C sehr ähnelt. Die tcsh hat zum beispiel die vollständige C-Arithmetik (Rechenoperationen) 1 zu 1 implementiert. Weiterhin gibt es Shells, die auf Sprachen wie TCL? (die tclsh), Perl? oder PHP aufbauen. Wenn eine Shell nicht an eine Programmiersprache explizit angelehnt ist, dann ist es wahrscheinlich, dass der Funktionsumfang und die Syntax jener Shell inzwischen selbst fast programmiersprachliche Größenordnungen angenommen hat. Die Bash ist ein Paradebeispiel dafür.

Skripte

Nahezu jede moderne Shell auf einem unixartigen System verfügt über Fähigkeiten, die es ermöglichen verschiedene Befehle und Strukturen zu kleinen Programmen - um genauer zu sein Skripten - zusammenzustellen. Viele Shells verfügen über Konstrukte, die man aus normalen Programmiersprachen kennt (IF, WHILE, FOR), auch Datentypen (Arrays, Zeichenketten, usw...) sind fast immer implementiert. Durch aneinanderreihung von Befehlen in einem Shellskript lassen sich also mitunter sehr komplexe Handlungsabläufe realisieren. Dabei ist jedes Bash-Skript einem Windows/DOS-Batch-Skript 100%ig überlegen. ;-)

Der Umgang mit Shells und Shellskripten ist im Unix-/Linux-Serverbereich unumgänglich. Jeder Administrator eines Servers sollte - zumindest grundlegende - Kenntnisse über seine Shell haben, denn das ist meist die einzige Möglichkeit den Server zu steuern, denn grafische Oberflächen fehlen in den meisten Fällen einfach. Confixx, Plesk und Co. sind natürlich nicht wirklich den Kommandointerpretern zuzuordnen, denn sie haben nicht annähernd das Potential, wie es eine vollständig im System implementierte bash hat.

Weblinks

Bearbeiten · Veränderungen zeigen · Druckansicht ·
Page last modified on July 29, 2006, at 06:43 PM