Vor- und Nachteile verschiedener Shells

Ratgeber: Shells für Linux und Unix richtig nutzen

Die Bourne-Shell: sh

Stephen Bourne - nicht zu verwechseln mit dem Filmagenten Jason Bourne - hat in den 1970er-Jahren die Bourne-Shell sh entwickelt. Sie war Ersatz für die Shell von Unix-Vater Ken Thompson, dessen Thompson-Shell die erste Unix-Shell war. Die Bourne-Shell gilt als Vorfahre der meisten heutigen Shells; sie besaß damals bereits alle wichtigen Funktionen wie Ein- und Ausgabeumlenkung, Pipes und Hintergrundprozesse. Unter Unix laufende Skripte sind meist für die Bourne-Shell geschrieben und funktionieren auch in den meisten anderen Shells. Damit es keine Probleme gibt, liegt deshalb auch immer eine Bourne-kompatible Shell hinter dem Kommando /bin/sh.

Die Bourne-Shell beherrscht Programmierfunktionen wie "if - then - elif - fi", "case - in - esac" und "for - while - do - od". Kritik an der Bourne-Shell betraf und betrifft hauptsächlich die mangelnde Interaktivität, wie sie etwa die C-Shell mit Job-Kontrolle und History-Funktion bietet. Auch ist die Bourne-Shell teilweise verhasst, weil ihre Grammatik mehr der Programmiersprache ALGOL ähnelt denn C wie im Rest von Unix. Bekrittelt wird auch immer wieder, dass selbst einfache arithmetische Funktionen mithilfe von Tools wie test und expr erledigt werden müssen.

Die Bourne-again-Shell: bash

Gut zu wissen: Die Manpage von bash beschreibt detailliert, wie man mit der Shell arbeitet und wie Shell-Skripte programmiert werden.
Gut zu wissen: Die Manpage von bash beschreibt detailliert, wie man mit der Shell arbeitet und wie Shell-Skripte programmiert werden.

Die bash ist Teil des GNU-Projekts. Sie wurde Ende der 1980er-Jahre von Brian Fox geschrieben. In weiten Teilen ist die bash kompatibel zur Bourne-Shell sh, hat allerdings einen größeren Funktionsumfang. Sie beherrscht Funktionen der Korn-Shell sowie der C-Shell, etwa die Kommando-History oder das Bearbeiten der Befehlszeile. Die bash ist die Standard-Shell auf einigen Linux-Systemen sowie unter Mac OS X.

Einige Befehle sind in der bash einfacher verwirklicht als in der Original-Bourne-Shell. So kann bash beispielsweise die Standardausgabe und die Standardfehlermeldung mit dem &>-Operator gleichzeitig umlenken. In der Bourne-Shell muss so etwas mit einem Befehl wie "BEFEHL > file 2>&1" erledigt werden.