Bourne-again shell
| Bash | |
|---|---|
Beispiel einer bash-Sitzung |
|
| Basisdaten | |
| Entwickler | Chet Ramey |
| Aktuelle Version | 4.2 (13. Februar 2011) |
| Betriebssystem | Unix, u. a. Linux |
| Kategorie | Kommandozeileninterpreter |
| Lizenz | GPL (Freie Software) |
| Deutschsprachig | Ja |
| Homepage | |
Die Bourne-again shell (bash) ist eine freie Unix-Shell und Teil des GNU-Projekts. Sie ist heute auf vielen unixoiden Systemen die Standard-Shell.
Der Name ist absichtlich mehrdeutig und bedeutet unter anderem „wiedergeborene (born again) Shell“, „wieder einmal (eine) Bourne-Shell“ oder auch aus dem Englischen to bash (schlagen, kritisieren, schlecht machen).
Inhaltsverzeichnis |
[Bearbeiten] Geschichte
Geschrieben wurde bash 1987 von Brian Fox und wurde 1990 von Chet Ramey übernommen. Version 3 erschien am 27. Juli 2004. Version 4 erschien am 20. Februar 2009 und brachte einige Neuerungen mit sich. Darunter sind eine neue Ausgabeumleitung, assoziative Arrays und eine neue Wildcard (**). [1] [2]
[Bearbeiten] Funktionalität
Die Shell ist weitgehend kompatibel zur Bourne-Shell (sh) und beherrscht zusätzlich sowohl die meisten Funktionen der Korn-Shell (ksh) als auch Teile der C-Shell (csh)-Syntax, wie zum Beispiel die „Command-History“, die $RANDOM-Variable und die POSIX-Form der Command-Substitution $(...) wurden übernommen. Auch wurde sie um Funktionen wie z. B. der Ganzzahlarithmetik ohne die Ausführung externer Prozesse und Vereinfachung der I/O-Umleitungen erweitert. Bash bietet außerdem die Möglichkeit, in der Datei ~/.bashrc eigene Einstellungen wie Designs zu speichern.
[Bearbeiten] Programmierung
Bash-Programmierung unterscheidet sich in vielen Punkten von anderen Programmiersprachen. So wird beispielsweise bei der Verzweigung die Bedingung nicht von der Shell selbst ausgewertet, sondern an ein weiteres Programm übergeben:
if [ Bedingung ] ; then # Falls Bedingung wahr ist, wird dies ausgeführt else # Falls Bedingung falsch ist, wird dies ausgeführt fi
Die beiden eckigen Klammern sind keine Begrenzer, sondern ein Synonym für den integrierten (builtin) Shell-Befehl test. Der Befehl test prüft die Bedingung und liefert einen Rückgabewert wahr oder falsch, der von der if-Anweisung verarbeitet wird. Der oben angeführte Code ist also identisch mit der folgenden Schreibweise:
if test Bedingung ; then # Falls Bedingung wahr ist, wird dies ausgeführt else # Falls Bedingung falsch ist, wird dies ausgeführt fi
Nach diesem Muster kann der Rückgabewert (wahr/falsch) eines beliebigen Programmes verarbeitet werden, nicht nur der des test-Befehls. Als Beispiel wird hier der kill-Befehl verwendet, um zu testen, ob ein Prozess mit einer bestimmten Nummer noch läuft bzw. in der Lage ist, Signale entgegenzunehmen:
if kill -0 1234 ; then # Prozess 1234 läuft else # Prozess 1234 läuft nicht fi
[Bearbeiten] Literatur
- Christian Meißner: Bash – Arbeiten und programmieren mit der Shell, Open Source Press, August 2011, ISBN 978-3-941841-44-4
- Karsten Günther: Bash - kurz & gut. 2008, ISBN 978-3-89721-533-7.
- Cameron Newham, Bill Rosenblatt: Learning the Bash Shell, 2nd Edition O’Reilly & Associates, Inc., 1998 , ISBN 1-56592-347-2
[Bearbeiten] Weblinks
bash(1)– Linux-Manpage (englisch)- Homepage
- Bash auf der GNU-Seite
- SelfLinux: Shellprogrammierung
- Advanced Bash-Scripting Guide (Englisch)

