7.2 Welche Shells gibt es?
sh
Ende der 70er-Jahre wurde mit der Unix-Version 7 von AT&T die erste Bourne- Shell (kurz sh) ausgeliefert. Diese Shell wurde in der Programmiersprache C (jedoch unter Verwendung Algol-68-ähnlicher Makros) entwickelt und stellte bereits einige wichtige Funktionalität zur Verfügung, wie etwa Pipes, sowie Ein- und Ausgabeumlenkung. Benannt wurde die Bourne-Shell nach ihrem Entwickler Stephen Bourne.
jsh
Die sogenannte Job Shell ist eine Weiterentwicklung der Bourne-Shell. Neu in dieser Shell waren die namensgebenden Jobs. Diese Jobs erlauben es (wie Sie später noch genau erfahren werden), Programme im Hintergrund ablaufen zu lassen, anzuhalten und später fortzusetzen.
csh
Neben der Bourne-Shell wurde in den ersten Jahren der BSD-Geschichte die C-Shell (csh) entwickelt. Ihr Begründer war Bill Joy, ein BSD-Mitentwickler und Gründer von Sun Microsystems. Joy war jedoch auch an diversen anderen wichtigen Projekten, etwa an der Weiterentwicklung der TCP/IP-Protokollfamilie, beteiligt. Die C-Shell wurde zum ersten Mal mit 4.1BSD publiziert. Zu ihren populärsten Features zählen die Funktionalität als Interpreter einer eigenen Skriptsprache (die, wie der Name C-Shell erahnen lässt, an die Syntax der Programmiersprache C angelehnt ist), die Kommando-History, die Job-Kontrolle und die interaktive Datei- und Benutzernamenerweiterung. Die C-Shell ist heute in ihrer Bedeutung nicht mehr der Bourne-Shell gleichzusetzen. In einem umfassenden Handbuch wie diesem werfen wir allerdings dennoch in Kapitel einen Blick auf die C-Shell.
Diese beiden Vertreter, also Bourne-Shell und C-Shell, stellen die beiden grundlegenden Shellvarianten unter Unix-Systemen dar. Die meisten populären Folgeentwicklungen bauen entweder auf der C-Shell und ihrer Syntax oder auf der Bourne- Shell und deren Syntax auf. Es gibt zwar auch andere Shells, die ihre Syntax keiner der beiden Shells angepasst haben, etwa die Scheme-Shell (shsh), die an die Syntax der Programmiersprache Scheme angelehnt ist, doch sind diese Shells in der Praxis weitgehend bedeutungslos. Einige Weiterentwicklungen kombinieren auch die Features beider Shells (C-Shell und Bourne-Shell).
tcsh
Die TENEX-C-Shell (tcsh) ist eine C-Shell-Weiterentwicklung von Christos Zoulas. Diese Shell bietet gegenüber der eigentlichen C-Shell einige Verbesserungen in Sachen Benutzerfreundlichkeit.
ksh
Die von David Korn entwickelte Korn-Shell (ksh) basiert auf den Eigenschaften und der Syntax der Bourne-Shell. Allerdings übernimmt die Korn-Shell auch einige Features der C-Shell. Die Korn-Shell ist Bestandteil des POSIX-Standards und in der Version ksh93 seit März 2000 als Quelltext zu haben.
pdksh
Da die Korn-Shell jedoch nicht immer frei war, entwickelte man die Public-Domain- Korn-Shell (pdksh). Diese Shell beinhaltet alle Funktionalität des ksh88-POSIX-Stan- dards und wird unter OpenBSD als Standardshell verwendet.
ash
Die Almquist-Shell (ash) ist eine kleine, der Bourne-Shell ähnliche Shell und stellt unter einigen BSD-Derivaten die Standardshell dar.
dash
Die Debian-Almquist-Shell (dash) basiert auf der NetBSD-Version der Shell ash. Unter Debian wird die dash als Ersatz für die ash eingesetzt, und einige Distributionen verwenden die dash anstelle der langsameren bash für ihre Startskripts (etwa Ubuntu). In der Entwicklung der Hardened-Linux-Distribution benutzten wir die dash unter anderem als Skriptsprache für die automatische Generierung von Packages. Die dash ist wie die ash größtenteils kompatibel mit der Bourne-Shell.
bash
Die Bourne-Again-Shell, kurz bash, ist wie die meisten aktuellen Shells ein Open-Source-Projekt. [Fn. Die bash wird vom GNU-Projekt unter der GNU General Public License entwickelt.] Die bash ist POSIX-Standard-konform und baut auf der Syntax der Bourne-Shell auf. Sie beherrscht sowohl Features der Bourne- und der Korn-Shell als auch solche der C-Shell. Die bash ist die Standardshell unter Linux-Systemen.
zsh
Ein wahrer Bolide unter den Unix-Shells ist die Z-Shell (zsh). Sie vereint die Features der bash, csh und tcsh. Sie bietet diverse individuelle Features wie die Nutzung der Bourne- und der C-Shell-Syntax, die Möglichkeit, Themes zu verwenden und sogar Module wie etwa zftp [Fn. Hiermit ist es möglich, sich direkt in der Shell an einem FTP-Server anzumelden, Interprozesskommunikation mit den Dateien eines FTP-Servers (über Pipes) durchzuführen u.v.m.] zu laden. Näheres zu dieser Shell erfahren Sie in [Steph99A] und [Wendzel03A].
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.