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/.
| |