Stand: 2/95

pdaktuellsmall.gif

Freie Shells für alle (Betriebssysteme)

Wie Sand am Meer

Michael Kuschke

Trotz X11-Oberflächen, graphischer Umgebungen und anderer Neuerungen ist der Unix-Kommandointerpreter noch immer die Schnittstelle zwischen Anwender und Betriebsystem. Ob nun eine Shell den Benutzer gegen das Betriebsystem schüzt oder umgekehrt, mag jder für sich entscheiden.

Bestandteil jedes Unix-Systems ist die Bourne Shell, kurz sh. Sie verfügt hauptsächlich über Fähigkeiten wie Variablensubstitution, Eingabeumleitung, Datenweitergabe über Pipes, Skript- und natürlich Kommandoausführung.

Auf neueren Maschinen (System V/POSIX) ist die Korn Shell (ksh) stetiger Begleiter des Betriebssystems. Ihre Skriptsprache ist eine Obermenge von der der ursprünglichen Bourne Shell, erweitert um Shell-Funktionen, History- und Alias-Mechanismen, editierbaren Kommandozeilen, Dateinamenkomplettierung und die Verarbeitung arithmetischer Ausdrücke. Von dieser Shell gibt es verschiedene frei verfügbare Implementierungen. Eine davon ist die PD-ksh. Ihre aktuelle Version 5.1.3 findet sich auf dem FTP-Server der Memorial Univ. of Newfoundland, Kanada: ftp.cs.mun.ca [134.153.1.133] unter /pub/pdksh. Wer lieber in deutschen Landen bleibt, dem seien die verschiedenen Linux-Server empfohlen. Ein Beispiel ist ftp.germany.eu.net [192.76.144.75] mit dem länglichen Pfad /pub/os/Linux/Mirror.SunSITE/system/Shells (oder allgemein unter /pub/utils/shells). Diese Variante der Korn Shell läuft auf einer Vielzahl von Unix-Plattformen, außerdem gibt es eine Portierung für IBMs OS/2.

Neben den genannten ist der Zweig der C Shells (csh) wohl die verbreiteste Variante des Kommandointerpreters. Diese Shell ist eng mit der Entwicklung von BSD Unix verknüpft. Lange Zeit war der Quelltext der csh nicht frei verfügbar, da er aus den Sourcen der Bourne Shells abgeleitet war. Mit BSD**4.4 gibt es nun den vollständigen Quelltext. In ihrer Entwicklung hat allerdings auch diese Shell einen würdigen Nachfolger in der tcsh gefunden, die sich insbesondere durch ihre interaktiven Fähigkeiten auszeichnet. So verfügt sie über einen Emacs-ähnlichen Kommandozeileneditor, Komplettierung von Dateinamen und Umgebungsvariablen, Dateiauswahl, Historysteuerung über Cursortasten, automatisches Logout nach einstellbarer Untätigkeit, Zeitstempel in der History, Statuszeilenunterstützung und und und. Die Liste der Goodies ist zu lang, um sie hier vollständig aufzuführen. Für C-Shell-Benutzer und solche, die es werden wollen, ein unbedingtes Muß. Die aktuelle Version 6.0.4 ist ebenfalls auf fast allen Linux-Servern zu finden. Allgemeine deutsche Sites sind sun2.ruf.uni-freiburg.de [132.230.1.2] und inf.informatik.uni-stuttgart.de [129.69.211.2] mit dem Verzeichnis /pub/misc.

Achtung!
Wer mit einem Proxy-Server arbeitet, könnte Probleme haben, sun2.ruf.uni-freiburg.de zu erreichen.

Standard auch für Shells

Natürlich verfügt auch das GNU Projekt mit seiner Bestrebung, ein freies Unix-ähnliches Betriebssystem zu schaffen, über eine eigene Shell. Die "Bourne Again SHell" (bash) versucht alle sinnvollen Features aus den oben angesprochenden Welten der Korn und C Shell in sich zu vereinigen. Bei der Implementierung haben ihre Schöpfer besonders darauf geachtet, daß die Bash den Festlegungen von IEEE und POSIX für Shells und Werkzeuge entspricht. Ihre Skriptsprache ist kompatibel zur Korn/Bourne Shell. Sie beherrscht Funktionen, arithmetische Ausdrücke, Aliases und eingebaute Kommandos (builtins) wie fc und jobs wie eine Korn Shell. Die Bang-History (bang = englisch für !), den Verzeichnisstack (pushd, popd und dirs) sowie die Tilde-Expansion von Benutzernamen hat sie von der C Shell. Darüberhinaus weist sie eine Menge an eigenen Features auf. So ist die Behandlung der Startup-Dateien flexibel wie bei kaum einer anderen Shell, die eingebauten Kommandos lassen sich nach Bedarf ein und ausschalten, der Kommandozeileneditor (basierend auf der GNU-Readline-Bibliothek) erlaubt es, Kommandos und Funktionen an beliebige Tastensequenzen zu knüpfen, und vieles mehr.

Interessant im europäischen Umfeld ist sicherlich auch, daß die neueste Version der Shell 1.14.3 acht Bit sauber sein soll, was bei der Eingabe und fürs Anzeigen von Umlauten von großer Bedeutung ist. Die Bash stellt mit ihrer gelungenen Mischung aus Korn und C Shell eine Art Königsweg zwischen den beiden großen Strömungen dar. Vielfach werden Shell-Skripten in Bourne- oder Korn-Shell Syntax verfaßt, wohingegen man sich beim interaktiven Arbeiten schnell an die Historymechanismen der C Shell gewöhnt. Die Bash bietet beides in einem, was sie schon allein eines Blickes würdig macht. Zu finden in jedem guten GNU-Archiv, beispielsweise im Verzeichnis /pub/packages/gnu des Dortmunder Servers.

Neben den oben näher besprochenen Shells gibt es eine wahre Fülle weiterer. Mittlerweile scheint fast jede Kombination eines Buchstaben mit "sh" belegt zu sein. Bespielsweise ist ash eine kleine Shell, die sich gut für ein mageres Unix auf einer Diskette eignet. Viele dieser Kommandointerpreter finden sich unter Linux wieder. Wer in der großen Netzwelt weitersuchen will, der suche einmal per archie nach ash, ksh, rsh, esh, ysh, zsh, vsh, smsh, sash und dergleichen. (ka)


© Copyright by Verlag Heinz Heise GmbH & Co KG
Veröffentlichung und Vervielfältigung nur mit Genehmigung des Verlags Heinz Heise GmbH & Co KG