2001-07-02 14:52:18 +02:00
\chapter { Was ist die Shell?} \index { Shell}
2001-07-02 15:02:30 +02:00
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.
2001-07-02 14:52:18 +02:00
\section { Sinn und Zweck}
2001-07-02 15:02:30 +02:00
In einem klassischen Unix-System (ohne die grafische Oberfl<66> che X) greifen die
Benutzer <20> ber Terminals\index { Terminal} auf das System zu. Auf diesen Terminals
k<EFBFBD> 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:
2001-07-02 14:52:18 +02:00
\begin { itemize}
\item Interaktive Anwendung (Dialog)
\item Anwendungsspezifische Anpassung des Unix-Systemverhaltens (Belegen von Umgebungsvariablen)
\item Programmierung (Shell-Skripting). Zu diesem Zweck stehen einige Mechanismen zur Verf<72> gung, die aus Hochsprachen bekannt sind (Variablen, Datenstr<74> me, Funktionen usw.).
\end { itemize}
2001-07-02 15:02:30 +02:00
Urspr<EFBFBD> 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<72> gung. Welche Variante
ein Benutzer verwenden m<> chte ist reine Geschmackssache.
2001-07-02 14:52:18 +02:00
\section { Die Qual der Wahl}
2001-07-02 15:02:30 +02:00
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 <20> blicherweise f<> r die
Programmierung benutzt werden.
2001-07-02 14:52:18 +02:00
\medskip \emph { Einfach-Shells:} \nopagebreak
\begin { itemize}
2001-07-02 15:02:30 +02:00
\item Die
Bourne-\index { Bourne-Shell|textbf} \index { Shell>Bourne-|see{ Bourne-Shell} } oder
Standard-Shell\index { Shell>Standard-|see{ Bourne-Shell} } \index { Standard-Shell|see{ Bourne-Shell} }
(\texttt { sh} \index { sh=\texttt { sh} |see{ Bourne-Shell} } ) ist die kompakteste und
einfachste Form. Sie bietet schon Mechanismen wie die Umlenkung der Ein- oder
Ausgaben, Wildcards zur Abk<62> rzung von Dateinamen, Shell-Variablen und einen
Satz interner Befehle zum Schreiben von Shell-Prozeduren. Neuere Versionen
beherrschen auch das Job-Controlling\index { Job-Controlling} . F<> r die
Entwicklung von Shell-Skripten sollte man sich auf diese Shell beschr<68> nken, da
sie auf praktisch allen Systemen zur Verf<72> gung steht. So bleiben die Skripte
portabel.
\item Die
Korn-Shell\index { Korn-Shell|textbf} \index { Shell>Korn-|see{ Korn-Shell} }
(\texttt { ksh} \index { ksh=\texttt { ksh} |see{ Korn-Shell} } ), eine Weiterentwicklung
der Bourne-Shell, erlaubt das editieren in der Befehlszeile. Au<41> erdem gibt es
hier History\index { History} -Funktionen\footnote { History-Funktionen erm<72> glichen
es dem Benutzer, einfach auf zur<75> ckliegende Befehle zur<75> ckgreifen zu k<> nnen.} ,
eine Ganzzahl-Arithmetik, verbesserte M<> glichkeiten zur Mustererkennung,
Aliase\index { Aliase} \footnote { Ein Alias ist eine Abk<62> rzung f<> r einen Befehl.
Beispielsweise kann man das H<> ufig benutzte \texttt { ls -la} einfach durch
\texttt { la} ersetzen.} und das Job-Controlling\footnote { Unter Job-Controlling
versteht man einen Mechanismus, mit dessen Hilfe der Benutzer die Ausf<73> hrung
von Prozessen selektiv stoppen oder fortsetzen kann} \index { Job-Controlling} .
Au<EFBFBD> erdem bietet die Korn-Shell im Gegensatz zu fast allen anderen Shells die
M<EFBFBD> glichkeit, Aliase und Shell-Funktionen an Subshells zu vererben.
\item Die C-Shell \index { C-Shell|textbf} \index { Shell>C-|see{ C-Shell} }
(\texttt { csh} \index { csh=\texttt { csh} |see{ C-Shell} } ) bietet <20> 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. \end { itemize}
2001-07-02 14:52:18 +02:00
\medskip \emph { Komfort-Shells:} \nopagebreak
\begin { itemize}
2001-07-02 15:02:30 +02:00
\item Die
Bourne-Again-Shell\index { Bourne-Again-Shell|textbf} \index { Shell>Bourne-Again-|see{ Bourne-Again-Shell} } \index { Shell>Bash|see{ Bourne-Again-Shell} }
(\texttt { bash} \index { bash=\texttt { bash} |see{ Bourne-Again-Shell} } ) ist voll
abw<EFBFBD> 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<72> gung. Die Bash unterst<73> tzt
Auto-Completion\index { Auto-Completion|textbf} \footnote { Mit Auto-Completion ist
das automatische Vervollst<73> ndigen von Dateinamen\index { Dateinamen} gemeint.} ,
History-Funktionen, Aliase\index { Aliase} , eine Ganzzahl-Arithmetik und
indizierte Arrays\index { Array} .
\item Die
TENEX-C-Shell\index { TENEX-C-Shell|textbf} \index { Shell>TENEX-C-|see{ TENEX-C-Shell} }
(\texttt { tcsh} \index { tcsh=\texttt { tcsh} |see{ TENEX-C-Shell} } ) verh<72> lt sich zur
C-Shell wie die Bourne-Again-Shell zur Standard-Shell. Sie ist voll kompatibel,
bietet aber Komfort-Funktionen wie Kommandozeilen-Editierung, programmierbare
Auto-Completion\index { Auto-Completion} , Rechtschreibhilfen und eine History.
\item Die Z-Shell\index { Z-Shell|textbf} \index { Shell>Z-|see{ Z-Shell} }
(\texttt { zsh} \index { zsh=\texttt { zsh} |see{ Z-Shell} } ) <20> hnelt der Korn-Shell,
enth<EFBFBD> lt aber viele Erweiterungen. Die Z-Shell unterst<73> tzt
Kommandozeilen-Editing, programmierbares
Auto-Completion\index { Auto-Completion} , Shell-Funktionen und eine History.
Zudem ist eine Rechtschreibpr<70> fung eingebaut. \end { itemize}
2001-07-02 14:52:18 +02:00
\medskip \emph { Exoten:} \medskip \nopagebreak
2001-07-02 15:02:30 +02:00
Desweiteren gibt es noch eine Reihe weiterer Shells, die aber nur selten
eingesetzt werden. Dazu geh<65> ren die
\texttt { ash} \index { ash|textbf} \index { Shell>ash=\texttt { ash} |see{ ash} } (Ein
Bourne-Shell-Clone f<> r Rechner mit wenig Speicher.),
\texttt { rc} \index { rc|textbf} \index { Shell>rc=\texttt { rc} |see{ rc} } (Noch ein
Bourne-Shell-Clone, urspr<70> nglich aus AT\& T Plan 9. Klein, schnell und mit eine
C-<2D> hnlichen Syntax.),
\texttt { esh} \index { esh|textbf} \index { Shell>esh=\texttt { esh} |see{ esh} } (Klein
und schnell, bietet eine Lisp-<2D> hnliche Sprache),
\texttt { sash} \index { sash|textbf} \index { Shell>sash=\texttt { sash} |see{ sash} }
(System Administrator's Shell - eine statisch gelinkte Shell mit integrierten
Standard-Kommandos.).
2001-07-02 14:52:18 +02:00
Diese Liste ist bei weitem nicht vollst<73> ndig.