Bash (Shell)

freie Unix-Shell
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. April 2011 um 11:45 Uhr durch Schily (Diskussion | Beiträge) (Einzelnachweise: bash ist weder auf Linux entwickelt worden noch Linux Spezifisch). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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.

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
Programmier­sprache C[1]
Kategorie Kommandozeileninterpreter
Lizenz GPL (Freie Software)
deutschsprachig ja
Homepage

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

Wikibooks: Linux-Kompendium: Shellprogrammierung – Lern- und Lehrmaterialien

Einzelnachweise

  1. The bash Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 3. September 2018).
  2. http://www.heise.de/ix/news/meldung/133409
  3. http://tiswww.case.edu/php/chet/bash/NEWS