Csh

Csh

Die Unix-Shell oder kurz Shell (en. Hülle, Schale) bezeichnet die traditionelle Benutzerschnittstelle unter Unix oder unixoiden Betriebssystemen. Der Benutzer kann in einer Eingabezeile Kommandos eintippen, die der Computer dann sogleich ausführt. Man spricht darum auch von einem Kommandozeileninterpreter.

In der Regel hat der Benutzer unter Unix die Wahl zwischen verschiedenen Shells. Vom Sprachumfang her sind alle üblichen Unix-Shells als vollwertige Skriptsprachen zur Programmierung und zur Automatisierung von Aufgaben verwendbar; die Abgrenzung zu reinen Skriptsprachen (z. B. Perl, awk) besteht darin, dass Shells besondere Mittel für den interaktiven Dialog mit dem Anwender bereitstellen, die vom Ausgeben eines Prompts im einfachsten Fall bis hin zur Möglichkeit des Editierens der eingegebenen Befehle oder zur Jobsteuerung reichen.

Im Gegensatz zu den Kommandozeileninterpretern manch anderer Betriebssysteme (z. B. VMS) sind Unix-Shells gewöhnliche Anwenderprogramme ohne besondere Privilegien.

Inhaltsverzeichnis

Allgemeines

Nach dem Einloggen ist die Shell das Programm, das vom login-Prozess gestartet wird und Kommandos entgegennimmt. Die Kommandos werden dann ausgeführt.
Man unterscheidet zwischen Kommandos, die in der Shell implementiert sind, wie z. B. cd, und Kommandos, die dann im Dateisystem gesucht und gestartet werden.

Die meisten gängigen Unix-Shells bieten die folgenden Funktionen:

  • Starten von Kommandos
  • Dateinamen-Wildcards (globs) als Kommandoargumente
  • Bedingungen (if, case) und Schleifen (while, for)
  • interne Kommandos (cd, read)
  • interne Variablen ($HOME)
  • Manipulation der Umgebungsvariablen für die neuen Prozesse
  • Ein-/Ausgabeumlenkung
  • Starten mehrerer Prozesse, Verkettung über Pipes
  • Starten von Prozessen im Hintergrund

Moderne Shells können darüber hinaus:

  • Vervollständigung von Kommandos, Dateinamen und Variablen (completion system)
  • Editieren der Kommandozeile (command line editing)
  • Wiederholung und Editieren früherer Kommandos (command history)
  • Stoppen und erneutes Starten von Prozessen (Job Control)
  • Verschieben von Prozessen aus dem Vordergrund in den Hintergrund und umgekehrt (Job Control)
  • Eingebautes Kommando zur Durchführung von Berechnungen ($((2+2)))
  • Eingebautes Kommando zum Testen von Dateieigenschaften (test)

Hinsichtlich des Abbruchs eines Kommandos machen sich die Shells die Eigenschaften des zugrundeliegenden Terminal-Gerätetreibers zunutze. Die Shell wartet normalerweise auf das Ende eines Kommandos. CTRL-C bewirkt unter Unix einen Kommandoabbruch, den der Gerätetreiber auslöst.

Unix-Werkzeuge

Unix-Shells machen sich die Eigenschaften des zugrundeliegenden Betriebssystems zunutze. Sie implementieren nur das Nötigste. Externe Unix-Kommandos ergänzen über die leistungsfähige Ein-/Ausgabe und Pipeimplementierung alles weitere. Unix enthält z. B. spezielle Kommandos für die Textdateimanipulation wie Suchen, Editieren, Ersetzen, Worte zählen, Zeichenübersetzung, Abschneiden von Zeilen usw.

Skripte

Der Urvater der meisten heutigen Shells, die Bourne-Shell, enthält nicht einmal eingebaute Kommandos für die Dateieigenschaften und für einfache Berechnungen. Auch die Ausgabe einer Variablen ist nicht möglich. Damit wäre nicht einmal ein einfacher Zähler zu implementieren.

Über die externen Kommandos expr, test und echo wird dies möglich. Ein Skript, das von 1 bis 100 zählt, kann wie folgt realisiert werden:

#!/bin/sh
I=1                      # Variable I auf 1 setzen
while test $I -le 100    # While-Schleife, externes Kommando test I<=100
do
    echo $I              # externes Kommando echo, gibt I aus
    I=`expr $I + 1`      # externes Kommando expr, Ausgabe von expr nach I
done

Bei späteren Versionen der Bourne-Shell und bei moderneren Shells sind die Kommandos test und echo intern, da sie sehr häufig benötigt werden und die Shell auch nicht mehr, wie bei sehr frühen Systemen, klein gehalten werden muss.

Der Text eines Skripts kann in eine Datei geschrieben und mit dem Kommando chmod +x ausführbar gemacht werden. Es verhält sich dann wie jedes andere Kommando, allerdings ist der Start von privilegierten Skripts oft eingeschränkt.

Beginnt eine ausführbare Unix-Datei mit der Zeichenfolge #! (Shebang), wertet das Betriebssystem die darauf folgenden Zeichen bis zum Zeilenende als Angabe, welches Programm gestartet werden soll, um diese Datei als Skript auszuführen. So kann man unabhängig davon, welche Shell der Aufrufer eines Skripts interaktiv verwendet, sicherstellen, dass das Skript mit der gewünschten Shell ausgeführt wird.

Systemstart

Beim Hochfahren des Unix-Systems werden auch Shell-Skripts eingesetzt. Die BSD-Varianten starten dazu einfach das Skript /etc/rc, das dann alle Systeminitialisierungen wie Dateisystemüberprüfung, Hintergrundprozesse usw. durchführt. System-V-Unix-Varianten verwenden sysinit, das aus mehreren Shell-Skripten besteht.

Kommandos, die eigentlich Shell-Skripts sind

Skripts sind von normalen Programmen in der Anwendung nicht zu unterscheiden. Manche Unix-Versionen liefern sogar einige Kommandos mit, die als Shell-Skripts realisiert sind. Insbesondere Kommandos wie man (Online-Manual) und cc (Aufruf von C-Compiler, Assembler und Linker) sind bei vielen Unix-Varianten Shell-Skripts.

Die frühen Shells

Die Thompson-Shell

Die Thompson-Shell (osh) war zwischen 1971 und 1979 die Standard-Shell des Unix-Systems. Die heute allgemeine Syntax für die Umleitung von Ein- und Ausgabeströmen stammt aus dieser Shell. Das pipe-Konzept wurde 1973 zuerst in der Thompson-Shell realisiert. Im Gegensatz zu jüngeren Shells war die Thompson-Shell keine Programmiersprache. Mit einem externen if- und goto-Kommando war jedoch eine Steuerung von Programmabläufen möglich. Die Thompson-Shell wurde 1979 als Standard-Shell durch die Bourne-Shell ersetzt.

Die Bourne-Shell

Der Vorfahre der meisten heutigen Shells ist die Bourne-Shell (sh) von Stephen R. Bourne, die 1977/1978 zusammen mit Unix V7 erschien. Auf fast allen kommerziellen Unix-Varianten findet sich bis heute noch eine spätere Version der Bourne-Shell, auch wenn sie als Systemshell (/bin/sh) zunehmend durch andere Shells ersetzt wird. Diese Shell hat auf Version 7 bereits alle wesentlichen Eigenschaften wie Ein-/Ausgabeumlenkung, Pipes, Hintergrundprozesse, Kontrollstrukturen. Bezüglich der Kommandozeileneditierung verlässt sich die Shell auf den Terminaltreiber, der nur das Löschen der ganzen Zeile (CTRL-U) und des letzten Zeichens (DEL) erlaubt.

Im Lauf der Zeit wurde die ursprüngliche Version erweitert und verändert. Da die Bourne-Shell nie eine sichtbare Versionierung erfuhr, ist die jeweilige Variante nur durch Testen der vorhandenen Eigenschaften herauszufinden. Die Bezeichnung ergibt sich dann mit der Variante des AT&T Unix, mit dem sie ausgeliefert wurde (V7, System III, System V Release 1 – kurz SVR1, SVR2, -3, -4, -4.2).

Die Bourne-Shell-Syntax ist Grundlage der meisten modernen Unix-Shells, die im Wesentlichen eine Erweiterung dieser Shell darstellen. Skripts für die Bourne-Shell sind praktisch ohne Änderung auch auf diesen Shells lauffähig. Die Skriptfähigkeiten der Bourne-Shell waren richtungsweisend und sh ist bis heute eine der beliebtesten Skriptsprachen für Unix. Aus diesem Grund und zwecks Rückwärtskompatibiliät liegt generell eine Bourne-kompatible Shell als /bin/sh vor.

Seit dem Erscheinen der csh mit 4.1BSD wird die Bourne-Shell meist nurmehr für Skripts, insbesondere solche, die Aufgaben des Systems erledigen, verwendet, weil sie bei der interaktiven Bedienung keine Editiermöglichkeiten vorsieht. Hierfür eignen sich Weiterentwicklungen wie tcsh, ksh oder bash wesentlich besser.

Nachdem die OpenSolaris/SVR4-Variante der Bourne-Shell von Sun als Open Source veröffentlicht wurde, ist diese Shell dank des Heirloom-Projekts mittlerweile auch auf freien Unix-Varianten verfügbar.

Beispielprogramm

Obwohl der Funktionsumfang der Bourne-Shell verhältnismäßig gering ist, können mit Hilfe der Standard-Unix-Programme alle für Kommandozeileninterpreter typischen Aufgaben übernommen werden. Die Syntax der Bourne-Shell ist etwas eigenwillig. Beispiel:

# !/bin/sh
tageszeit=`date +%H`
if [ $tageszeit -lt 12 ]; then
  echo "Guten Morgen."
else
  echo "Guten Tag."
fi

In der ersten Version der Bourne-Shell ist kein Mechanismus implementiert, der das Kriterium z. B. für eine erweiterte Fallunterscheidung auswerten könnte. Die Bourne-Shell selbst kann nur eine boolesche Auswertung durchführen. Weitere Kriterien werden durch ein externes Programm erledigt. (In neueren Bourne-Shells ist test teilweise implementiert, wird aber, wie alle built-in-Befehle, bei Vorhandensein eines externen Programms nicht verwendet.) In dem Beispiel wird das Programm /bin/test aufgerufen. Die eckigen Klammern sind eine andere semantische Schreibweise für if test $tageszeit -lt 12 mit den Argumenten aktuelle Stunde (gespeichert in $tageszeit), -lt (lower than – kleiner als), 12. Gibt das Programm test den Status 0 (d.h. "wahr") zurück, so wird alles zur Anweisung then Gehörende ausgeführt. Gibt test den Status 1 (d.h. "falsch") zurück, so wird alles zur Anweisung else Gehörende ausgeführt. Da anschließend an die jeweiligen Schlüsselwörter eine Liste von Anweisungen folgen kann, wird mit der Anweisung fi (d.i. ein umgedrehtes if) die durch das Schlüsselwort if eingeleitete Fallunterscheidung beendet.

Die C-Shell

Bill Joy entwickelte in Berkeley für die zweite BSD-Distribution (2BSD) von 1979 eine Shell, die sich mehr an der C-Syntax orientierte, die C-Shell (csh). Diese Shell erlaubt bereits eine Kommandozeileneditierung, allerdings nicht interaktiv, sondern über eine spezielle Syntax. Sie ermöglicht auch das Wiederholen (und Editieren) alter Kommandos. Außerdem wird erstmals die Job-Control-Möglichkeit implementiert: Über CTRL-Z lässt sich ein Kommando stoppen und später über die internen Kommandos fg (Foreground = Vordergrund) bzw. bg (Background = Hintergrund) fortsetzen.

Die C-Shell besitzt viele bekannte Features der bash, wie z. B. Aliase oder eine History. Heutzutage wird die C-Shell nur noch wenig benutzt; sie wurde von anderen Shells wie der tcsh, der ksh (Korn-Shell), der bash (Bourne again Shell) oder der zsh abgelöst.

Die Skriptfähigkeiten der C-Shell sind durch diverse Unzulänglichkeiten etwas eingeschränkt, z. B. kann die Fehlerausgabe nicht unabhängig von der Standardausgabe umgelenkt werden. Ein Anwender, der für die interaktive Eingabe die C-Shell verwendet, kann durch ein vorangestelltes #!/bin/sh in seinen Skripten das Betriebssystem veranlassen, die Standard-Shell (diese ist mindestens kompatibel zur Bourne-Shell, auf modernen Systemen auch meist POSIX-konform) zu verwenden. Dies ist auch für alle anderen Shells möglich.

Weiterentwicklungen

Auf jedem Unix-System befindet sich eine zu der Bourne-Shell kompatible Shell in /bin/sh. Die Verfügbarkeit weiterer Shells hängt von der jeweiligen Unix-Variante ab, eine C-Shell-Version findet sich oft in /bin/csh. Wegen der unterschiedlichen Syntax unterscheidet man Bourne-Shell- und C-Shell-Abkömmlinge. Da praktisch alle modernen Shells in der Programmiersprache C geschrieben sind, lassen sich fehlende Shells leicht nachrüsten. Auch auf fremden Betriebssystemen kann man oft eine Unix-Shell, zumindest als Fremdsoftware, finden.

Die Job-Control-Shell

Die Job-Control-Shell ist eine Bourne-Shell (genauer die SVR4-Variante, also erstmals erschienen auf dem AT&T-Unix „System V Release 4“), die um Job-Control-Eigenschaften (wie sie mit der C-Shell bekannt wurden) erweitert ist. Häufig handelt es sich sogar um dasselbe Programm, welches die zusätzlichen Eigenschaften (z. B. die Kommandos bg, fg, jobs, kill, stop, suspend, wait) nur aktiviert, wenn es unter dem Namen jsh statt sh aufgerufen wird.

Die Korn-Shell

→ Hauptartikel: Korn-Shell

David Korn entwickelte für Unix System V von AT&T die Korn-Shell (ksh). Diese orientiert sich an der Bourne-Shell, übernimmt aber auch die Neuerungen der C-Shell wie Job-Control, eine weiter verbesserte Kommandozeileneditierung. Es existiert eine Version von 1988 (ksh88) und eine neuere von 1993 (ksh93). Die ksh88 ist Grundlage des POSIX-Standards. Die Korn-Shell war als Teil von Unix System V lange Zeit nur kommerziell erhältlich. Seit dem 1. März 2000 ist der Quelltext von ksh93 frei verfügbar. Viele kommerzielle Unix-Systeme verwenden die ksh als Standard-Shell (/bin/sh).

Die dtksh („Desktop Korn Shell“) stellt eine Korn-Shell mit zusätzlichen Kommandos für die Programmierung von Benutzeroberflächen unter X11/Motif dar.

Die Public-Domain-Korn-Shell

Die Public-Domain-Korn-Shell (pdksh) ist eine freie und nicht vollständig kompatible Kopie der AT&T-Korn-Shell. Viele Funktionen von ksh88 und wenige von ksh93 sind in ihr enthalten. Das OpenBSD-Projekt verwendet die pdksh als Standard-Shell (/bin/sh).

Die MirBSD Korn Shell (mksh) basiert auf OpenBSDs Version der pdksh (oksh), enthält jedoch viele Fehlerbeseitigungen, Verbesserungen, sowie Funktionen von ksh93 und anderen Shells.

Die Bourne-Again-Shell

→ Hauptartikel: Bourne-again shell

Die Bourne-again-shell (bash) ist Teil des GNU-Projekts. Ihr Name ist ein absichtlich mehrdeutiges Wortspiel und kann sowohl als „wiedergeborene (born again) Shell“ als auch als „wieder einmal (eine) Bourne-Shell“ interpretiert werden. Weitere Interpretationen sind abgeleitet aus dem englischen bash (die Feier, die Party, der Schlag) und to bash (schlagen, kritisieren, schlecht machen). Geschrieben wurde die Bash größtenteils von Brian Fox und Chet Ramey Ende der 80er Jahre.

Die Bash ist voll kompatibel zur originalen Bourne-Shell (sh), im Funktionsumfang jedoch erheblich erweitert. Vor allem beherrscht sie einen Großteil der Fähigkeiten der ksh und versteht auch Teile der Syntax der csh, wie zum Beispiel die Command-History, den Directory-Stack, die $RANDOM-Variable und die POSIX-Form der Command-Substitution $(…). Daneben sind auch eine ganze Reihe eigene Erweiterungen implementiert.

Die Bash (/bin/bash) ist die Standard-Shell sowohl auf den meisten Linux-Systemen als auch unter Mac OS X und wurde auf fast alle Unix-Systeme portiert. Die aktuelle Version ist 4.0 (Stand 27. Februar 2009).

Für Windows existieren zahlreiche Portierungen. Die bekanntesten sind:

Projekt Seite GNU bash

Die TENEX-C-Shell

Die TENEX-C-Shell (tcsh) stellt eine Erweiterung der C-Shell (csh) von Christos Zoulas dar. Sie enthält Verbesserungen der Kommandozeileneditierung und andere Erweiterungen wie einer (programmierbaren) Dateinamen-Vervollständigung, der Möglichkeit des Editierens von Dateien direkt in der Kommandozeile, und einigen anderen Dingen. Sie ist aber sonst vollständig kompatibel zur C-Shell.

Das 't' in tcsh stammt aus dem 'T' in TENEX ab, einem Betriebssystem, von dem sich der Autor der tcsh hat inspirieren lassen. Die tcsh ersetzt die csh auf vielen BSD-Systemen und älteren Versionen von Mac OS X.

Die Z-Shell

Die Z-Shell (zsh) ist eine Shell mit sehr vielen Möglichkeiten. Sie ähnelt sehr der Korn-Shell und übernimmt auch Funktionen der Bourne-Again-Shell und der TENEX-C-Shell. Sie geht aber in vieler Hinsicht eigene Wege und gilt als eine der leistungsfähigsten Unix-Shells. Sie kann als Loginshell, als interaktive Shell und als Interpreter für Shell-Skripts verwendet werden.

Die Zsh kann man als eine Zusammenstellung aller Verbesserungen und Features aus der bash, der csh und der tcsh betrachten. Zu einigen ihrer Features zählen:

  • Eine frei programmierbare Wortvervollständigung (TAB-Completion)
  • Die Möglichkeit, die History aus anderen – gleichzeitig laufenden – Shells zu nutzen
  • Rechtschreibüberprüfung
  • Nahezu vollständige Kompatibilität zur bash, ksh und tcsh
  • Starke Veränderbarkeit des Prompts durch Themes, u. a. die Möglichkeit, den Prompt auf die rechte Seite des Terminals zu setzen
  • Erweiterte Globbing-Funktionalitäten

Die Z-Shell wurde 1989 von Paul Falstad entwickelt. Sie ist benannt nach dem Login-Namen zsh eines seiner Mitarbeiter. Im Gegensatz zur Bash steht die zsh unter der BSD-Lizenz. Daher wurde sie auch eine Zeit lang als Standard-Shell von Mac OS X eingesetzt. Sie ist dort immer noch als Option vorhanden.

Die Almquist-Shell

Die Almquist-Shell (ash) von Kenneth Almquist ist eine Neuimplementierung der SVR4-Variante der Bourne-Shell. Sie wurde ursprünglich für die traditionellen BSD-Varianten von Unix geschrieben, nachdem die Bourne-Shell selbst nur noch mit Lizenzierung zu erhalten war. Spätere Varianten orientieren sich am POSIX-Standard und eignen sich sehr gut zur Ausführung von Skripten. Die FreeBSD- und NetBSD-Projekte verwenden weiterentwickelte Versionen der ash als Standard-Shell (/bin/sh). Da die ash im Vergleich zu anderen modernen Shells sehr geringe Ansprüche an Speichergröße und Rechnergeschwindigkeit stellt, wird sie auch gerne in Embedded-Linux-Systemen verwendet; sie wurde auch in die ebenfalls im Embedded-Bereich verbreitete Multifunktions-Binary BusyBox integriert.

Die Debian-Almquist-Shell

Die Debian-Almquist-Shell (dash), Bourne-kompatibel und POSIX-konform, ist ein direkter Abkömmling der Almquist-Shell. Sie wurde 1997 durch Herbert Xu portiert und 2002 nach dash umbenannt. Die dash ist ein moderner Ersatz für die ash im Debian-Projekt, wo sie als Alternative zur bash als /bin/sh eingerichtet werden kann, was die Abarbeitung der init-Skripte beim Hochfahren beschleunigt. Aus demselben Grund ist die dash die Vorgabe-/bin/sh bei Ubuntu seit Ausgabe 6.10.

Perl-Shells

Diese Shells sind in der Lage, Perl-Kommandos zu verarbeiten, beispielsweise um Pipes effizient zu manipulieren.

  • zoid – Zoidberg-Shell
  • psh – Perl-Shell, siehe auch psh2

Weitere Shells

  • Neben einer Neuimplementierung der letzten Thompson-Shell (osh = old shell), die unter Unix vor Einführung der Bourne-Shell in Gebrauch war, existiert eine Unix-Implementierung (Byron Rakitzis) des im Vergleich zur Bourne-Shell syntaktisch klareren Plan-9-Kommandointerpreters rc (run command) von Tom Duff, sowie die an die Syntax der rc anschließende, semantisch manipulierbare bzw. erweiterbare es (extensible shell) von Paul Haahr und Byron Rakitzis, in die Ideen der funktionalen Programmierung einflossen.
  • Eine Shell, bei der der interaktive Aspekt zunächst bewusst zu Gunsten der Shell-Programmierung vernachlässigt wird, ist die Scheme-Shell (scsh) von Olin Shivers, mit der für die Shell-Programmierung eine genuine Programmiersprache (Scheme) zur Verfügung steht.
  • Eine syntaktisch an der Programmiersprache LISP orientierte Shell ist esh (easy shell) von Ivan Tkatchev.
  • Vor allem an Nutzerfreundlichkeit orientiert ist Axel Liljencrantz' fish (friendly interactive shell). Sie wird u. a. beim midnight commander mitgeliefert.
  • Von Gunnar Ritter stammt eine Portierung der OpenSolaris-Bourne-Shell nach Linux, Solaris, Free- und NetBSD, die unter dem Namen Heirloom Bourne Shell firmiert.
  • Einige RedHat-Mitarbeiter haben die nash entwickelt, die von sich behauptet, keine Shell zu sein ("not a shell"), sondern "nur" ein Befehlsinterpreter, der "linuxrc"-Images interpretieren soll (s. nash-man-page). Sie scheint vor allem im RedHat- und Mandriva-Umfeld eingesetzt zu werden. Sie ist dort Teil des "mkinitrd"-Pakets.
  • Die sash (Stand-alone shell) ist daran getrimmt, dass möglichst viele externen Kommandos durch die internen Funktiones der Shell ersetzt werden. Dadurch ist das System auch dann bedienbar, wenn wesentliche externe Programme fehlen.

Kompatibilität und Portabilität

Je nach Abstammung der Shell sind für sie geschriebene Skripts nicht oder nur bedingt kompatibel zu anderen Shells. Zum Beispiel lassen sich Bourne-Shell-Skripts nicht unter der C-Shell ausführen, aber es besteht eine gewisse Chance, dass ein solches Skript unter einer Korn-Shell oder Job-Control-Shell läuft.

Neben diesem offensichtlichen Problem besteht aber auch das Problem, dass unterschiedliche Implementierungen der gleichen Shell existieren und dass Shells unter Beibehaltung ihres Namens im Laufe der Zeit auch weiterentwickelt wurden und werden. Die gleichen (gleich benannten) Shells auf unterschiedlichen Unix-Varianten weisen unterschiedliche Entwicklungsstände und somit sowohl unterschiedliche Eigenschaften als auch Fehler auf.

Hinzu kommt, dass Shell-Skripts, wie bereits beschrieben, viele normale Unix-Kommandos aufrufen. Auch diese unterscheiden sich in ihrem Verhalten zum Teil von Unix zu Unix. Dadurch kann sich das Verhalten eines Shell-Skripts ebenfalls ändern, wenn es auf einem anderen Unix ausgeführt wird.

Eine gängige Strategie zum Schreiben von portablen Shell-Skripten ist es, sich nur auf den kleinsten gemeinsamen Nenner zu verlassen. Dies bedeutet in der Regel, dass man die Bourne-Shell verwendet und damit auf die bequemen Erweiterungen, wie sie zum Beispiel in der Korn-Shell oder bash zu finden sind, bewusst verzichtet. Je nachdem, wie groß die Bandbreite der abzudeckenden Systeme ist, verzichtet man auch auf die Benutzung neuerer, in POSIX standardisierter Bourne-Shell-Features.

Literatur

  • Helmut Herold: Linux-Unix-Shells, Bourne-Shell, Korn-Shell, C-Shell, bash, tcsh ISBN 3827315115
  • Alexander Mayer: Shell-Skripte in Unix ISBN 3936546231
  • Morris I. Bolsky, David G. Korn: The new Korn Shell Command and Programming Language, 2nd Edition Prentice Hall, 1995, ISBN 0-13-182700-6
  • Arnold Robbins, Bill Rosenblatt: Learning the Korn Shell, 2nd Edition O’Reilly 2002, ISBN 0596001959
  • Cameron Newham, Bill Rosenblatt: Learning the Bash Shell, 2nd Edition O’Reilly & Associates, Inc., 1998, ISBN 1565923472
  • Paul Dubois: Using tcsh and csh, O’Reilly 1995, ISBN 1565921321
  • Patrick Ditchen: Shell-Skript Programmierung, 2. Auflage, mitp, 2006, ISBN 3826616235
  • Ellie Quigley: UNIX Shells by Example, 4th Edition, Prentice Hall PTR, 2005, ISBN 013147572X
  • O. Kiddle, J. Peek, P. Stephenson: From Bash to Z Shell, Apress, 2004, ISBN 1590593766
  • Jürgen Wolf: Shell-Programmierung – Einführung, Praxis, Referenz, Galileo Computing, 2005, ISBN 978-3-89842-683-1
  • Sven Guckes, Julius Plenz: Zsh – Die magische Shell, Open Source Press, 2008, ISBN 978-3-937514-59-8
  • Karsten Günther: Bash – kurz & gut, 2008, ISBN 978-3-89721-533-7

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • CSH — is a three letter acronym with multiple meanings: Caesium hydride, a crystalline solid with the molecular formula CsH Calcium silicate hydrate, or calcium silicate hydrogel, the main component of cement paste Canadian Subject Headings is a list… …   Wikipedia

  • CSH — (CsH, csh) может значить: CsH гидрид цезия, неорганическое соединение. C shell (csh) командная оболочка UNIX. CSH Corporation for Supportive Housing, некоммерческая организация по предупреждению и искоренению бездомности в США …   Википедия

  • Csh — У этого термина существуют и другие значения, см. CSH. C shell Тип Командная оболочка UNIX Автор Билл Джой Написана на Си Операционная система BSD, UNIX, Linux, Mac OS X Первый вы …   Википедия

  • CSH — Die Abkürzung CSH steht für: Shanghai Airlines (ICAO Code) Council for Secular Humanism Convoy Sun Hei SC Chambéry Savoie HB Cold Spring Harbor Calciumsilicathydrat Die Abkürzung csh steht für: Eine Unix Shell Die Abkürzung CsH steht für: die… …   Deutsch Wikipedia

  • CSH-2 — Denel AH 2 Rooivalk …   Deutsch Wikipedia

  • CSH — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.   Sigles d’une seule lettre   Sigles de deux lettres > Sigles de trois lettres   Sigles de quatre lettres …   Wikipédia en Français

  • Csh —  Pour l’article homophone, voir Seychelles. Pour les articles homonymes, voir CSH. Le C Shell est une évolution du shell sh utilisant une syntaxe plus proche du langage C. Son avantage était la possibilité de ré utilisation de l historique… …   Wikipédia en Français

  • CSH (значения) — CSH (CsH, csh) может значить: CsH гидрид цезия, неорганическое соединение. C shell (csh) командная оболочка UNIX. CSH Corporation for Supportive Housing, некоммерческая организация по предупреждению и искоренению бездомности в США …   Википедия

  • CSH Protocols — is an on line scientific journal and methods database for biologists, published by Cold Spring Harbor Laboratory Press. Protocols are presented step by step and edited in the style that has made Molecular Cloning, Antibodies, Cells and many other …   Wikipedia

  • CSH (Aviation) — CSH Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. {{{image}}}   Sigles d une seule lettre   Sigles de deux lettres > Sigles de trois lettres …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”