Bash (Shell)
Bash
| |
---|---|
![]() | |
![]() Beispiel einer bash-Sitzung | |
Basisdaten
| |
Maintainer | Chet Ramey |
Entwickler | Chet Ramey |
Erscheinungsjahr | 8. Juni 1989 |
Aktuelle Version | 4.2 (13. Februar 2011) |
Betriebssystem | Unix, u.a. Linux |
Programmiersprache | C[1] |
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).
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 (**). [2] [3]
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 Ganzzahlarithmetrik 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.
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) von jedem beliebigen Programm 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
Literatur
- 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
Weblinks
bash(1)
– Debian GNU/Linux Ausführbare Programme oder Shell-Befehle Handbuchseite- Homepage
- Bash auf der GNU-Seite
- SelfLinux: Shellprogrammierung
- Advanced Bash-Scripting Guide (Englisch)
Einzelnachweise
- ↑ The bash Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 3. September 2018).
- ↑ http://www.heise.de/ix/news/meldung/133409
- ↑ http://tiswww.case.edu/php/chet/bash/NEWS