Die Shell ist ein Programm, mit dessen Hilfe das System die Benutzerbefehle
verstehen kann. Aus diesem Grund wird die Shell auch oft als Befehls- oder
Kommandointerpreter bezeichnet.
In einem klassischen Unix-System (ohne die grafische Oberfläche X) greifen
die Benutzer über Terminals auf das System zu. Auf diesen Terminals können
nur Textzeichen dargestellt werden. Um dem Benutzer die Arbeit mit dem
System effektiv möglich zu machen, gibt es die Shell. Die Shell wird dabei
für drei Hauptaufgaben benutzt:
-
Interaktive Anwendung (Dialog)
-
Anwendungsspezifische Anpassung des Unix-Systemverhaltens
(Belegen von Umgebungsvariablen)
-
Programmierung (Shell-Skripting). Zu diesem Zweck stehen einige
Mechanismen zur Verfügung, die aus Hochsprachen bekannt sind
(Variablen, Datenströme, Funktionen usw.).
Ursprünglich handelte es sich dabei um ein relativ einfaches Programm, der
Bourne Shell (wird oft auch Standard-Shell genannt). Dies ist
praktisch die Mutter aller Shells. Aus dieser entwickelten sich
im Laufe der Zeit mehrere
Varianten, die alle ihre eigenen Vor- und Nachteile mit sich bringen. Da es
unter Unix kein Problem darstellt den Kommandointerpreter auszutauschen,
stehen auf den meisten Systemen mehrere dieser Shells zur Verfügung. Welche
Variante ein Benutzer verwenden möchte ist reine Geschmackssache.
|
Um die Auswahl einer Shell zu erleichtern, werden hier die wichtigsten
Varianten kurz vorgestellt. Sie sind aufgeteilt in Einfach- und
Komfort-Shells. Die Komfort-Shells zeichnen sich durch komfortablere
Funktionen zur interaktiven Bedienung aus, während die Einfach-Versionen
üblicherweise für die Programmierung benutzt werden.
Einfach-Shells:
-
Die Bourne- oder
Standard-Shell
(sh) ist die kompakteste und einfachste
Form. Sie bietet schon Mechanismen wie die Umlenkung der Ein- oder
Ausgaben, Wildcards zur Abkürzung von Dateinamen, Shell-Variablen und
einen Satz interner Befehle zum Schreiben von Shell-Prozeduren.
Neuere Versionen beherrschen auch das Job-Controlling. Für die
Entwicklung von Shell-Skripten sollte man sich auf diese Shell
beschränken, da sie auf praktisch allen Systemen zur Verfügung steht.
So bleiben die Skripte portabel.
-
Die Korn-Shell (ksh),
eine Weiterentwicklung der Bourne-Shell, erlaubt
das Editieren in der Befehlszeile. Außerdem gibt es hier
History-Funktionen um auf zurückliegende Befehle zurückgreifen zu können,
eine Ganzzahl-Arithmetik, verbesserte Möglichkeiten zur Mustererkennung,
Aliase und das Job-Controlling.
Ein Alias ist dabei eine Abkürzung für einen Befehl. Beispielsweise kann
man das häufig benutzte ls -la einfach durch
la ersetzen.
Unter Job-Controlling versteht man einen Mechanismus, mit dessen Hilfe
der Benutzer die Ausführung von Prozessen selektiv stoppen oder fortsetzen
kann.
-
Die C-Shell (csh)
bietet ähnliche Annehmlichkeiten wie die
Korn-Shell,
lehnt sich aber in der Syntax sehr stark an die Programmiersprache C
an. Sie sollte nach Möglichkeit nicht zur Shell-Programmierung benutzt
werden, da sie an vielen Stellen nicht so reagiert, wie man es erwarten
sollte.
Komfort-Shells:
-
Die Bourne-Again-Shell (bash)
ist voll abwärtskompatibel zur sh, bietet
aber von allen Shells die komfortabelsten Funktionen für das interaktive
Arbeiten. Da die Bash ein GNU-Produkt ist, ist sie die Standard-Shell
auf allen Linux-Systemen. Sie steht aber auch auf den meisten anderen
Unixen zur Verfügung.
-
Die T-C-Shell(tcsh)
verhält sich zur C-Shell wie die
Bourne-Again-Shell zur Standard-Shell. Sie ist
voll kompatibel, bietet
aber zusätzliche Komfort-Funktionen.
-
Die Stand-Alone-Shell (sash)
ist vor allem nützlich für die
System-Recovery. Sie kann gegen statische Bibliotheken gelinkt
werden und beinhaltet bereits (teilweise vereinfachte) Formen von
Standard-Systemkommandos. Kann man also, nach einem System-Crash,
eine statisch gelinkte sash erreichen, ist es oft möglich, mit
ihrer Hilfe das System wiederherzustellen. Nähere Informationen
finden sich auf
http://www.canb.auug.org.au/~dbell/ und
http://www.baiti.net/sash/.
|
|