Mittwoch, 23. Februar 2011

Shellskript Programmierung - Teil 2 (Welche Shells gibt es?)

(Date/Datum: 080218-20:33, Hits: 2971) Die wichtigsten Shells

Heute werde ich einen kleinen Überblick über die unter Linux verfügbaren Shells geben. Normalerweise befinden sich diese Shells im Verzeichnis /bin und enden auf 'sh'. Beispiele sind /bin/sh, /bin/bash oder /bin/csh.[1]

Die im System registrierten Shells, die auch für den Login bei Benutzern erlaubt sind, sind in der Datei /etc/shells gelistet. Mit dem Programm 'cat' kann man diese Datei auf dem Bildschirm ausgeben lassen:


$ cat /etc/shells
# /etc/shells: valid login shells
/bin/ash
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/zsh
/bin/sash
/bin/zsh
/usr/bin/esh
/bin/bash
/bin/rbash


Die Familie der Bourne-Shell

Die Standardshell unter den meisten unixartigen Systemen ist die Bourne-Shell bzw. eine Shell, die auf ihr basiert. Die Bourne Shell wurde bereits 1977 von Steve Borne in den Bell Labs entwickelt. Sie befindet sich in /bin/sh, wobei dies unter Linux fast immer ein Link auf die Datei /bin/bash ist. Die 'bash' (Borne Again Shell) basiert wie auch die Ksh (Korn-Shell) auf der Bourne-Shell und die Shellskripte dieser Shells sehen sehr ähnlich aus. In den folgenden Postings zum Thema "Shellskript Programmierung" werde ich mich auf die bash beziehen, da fast jeder diese Shell benutzt und auch die Skripte für den Systemstart in dieser Shell geschrieben sind.

Die Familie der C-Shell

Die C-Shell (/bin/csh) ist ebenfalls immer auf Linux-Systemen vorhanden. Ihr Syntax ist an die Programmiersprache 'C' angelehnt. Meist steht dem Benutzer auch die Weiterentwicklung 'tcsh' zur Verfügung. Hier sind zehn Gründe, um die C-Shell nicht zu verwenden: http://www.grymoire.com/Unix/CshTop10.txt Ich persönlich habe den Text nicht gelesen, aber vielleicht interessiert sich ja jemand dafür.

Weitere Shells

Es gibt noch einige weitere erwähnenswerte Shells, die ich aber nur sehr kurz erwähnen möchte:

  • Z-Shell. Eine besonders funktionale Shell die die Features von tcsh, ksh und bash vereint und zudem Module zur Verfügung stellt. Die meisten in den folgenden Postings besprochenen Funktionalitäten werden auch mit dieser Shell funktionieren.
  • ash (Almquist Shell) und auf ihr basierend die 'dash' (Debian Almquist Shell). Diese Shell ist unter den meisten BSD-Derivaten die Standardshell und die in den folgenden Postings besprochenen Skripte werden in vielen Fällen auch in dieser Shell funktionieren, da auch sie relativ kompatibel zur Bourne-Shell ist.
  • scsh (Scheme Shell). Diese Shell ist angelehnt an die funktionale Programmiersprache "Scheme", die ein LISP-Dialekt ist.


[Fußnote 1] Für Interessierte: Unter BSD befinden sich Shells, die nicht zum Standardumfang des Derivats gehören sondern aus Ports erstellt werden, meist in /usr/local/bin, wobei in /bin nur wenige Shells zu finden sind.

Keine Kommentare:

Kommentar veröffentlichen