Hor - stock.adobe.com

Bourne Shell und Bash: Das sind die wichtigsten Unterschiede

Bash (Bourne again Shell) und Bourne sind die beiden bekanntesten Shells für Linux-Distributionen. Wir erklären die Unterschiede, und wie Sie in Linux auf Bourne umstellen.

Die meisten Linux-Administratoren kommen nicht ohne ein Terminal-Fenster aus. Sie sind es gewohnt, Befehle über die Kommandozeile auszuführen. Die am meisten verwendete Shell ist dabei die Bourne Again Shell, auch bekannt als Bash.

Aber was ist eine Shell eigentlich? Es ist ein Programm, das über eine Befehlszeile (Kommandozeile, Command Line Interface, CLI) Eingaben von einer Tastatur empfängt und sie an das Betriebssystem weitergibt. Sobald Nutzer Befehle eingeben, interpretiert sie die Shell und übersetzt sie, damit das Betriebssystem sie versteht.

Die Syntax von Bash beinhaltet die von Bourne komplett. Bash erschien am 8. Juni 1989 und ist heute der de-facto-Standard für Shells in Linux-basierten Betriebssystemen.

Natürlich gibt es viele Shells für Linux. Neben Bash und Bourne Shell gibt es auch noch Korn, C, tcsh und Zsh. Wie bereits erwähnt, ist Bash jedoch bei weitem die beliebteste.

Es ist sogar selten, dass man heute auf die echte Bourne Shell trifft. Wer FreeBSD oder Unix einsetzt, arbeitet wahrscheinlich mit Bourne. Weil die meisten Unternehmen jedoch eher Linux verwenden, ist die Chance höher, dass Administratoren heute mit Bash in Berührung kommen.

Welche Shells in Ihrer Linux-Distribution verfügbar sind, finden Sie mit nachfolgendem Befehl heraus:

cat /etc/shells

Sie sollten dann folgende Ausgabe, oder zumindest eine ähnliche erhalten:

/bin/sh

/bin/bash

/bin/rbash

/bin/dash

Von der Bash auf die Bourne Shell umstellen

Zwar ist Bash der Standard, Sie können aber auch auf Bourne (oder sh) umstellen und müssen dafür nichts installieren. Um von Bash auf Bourne zu wechseln, öffnen Sie ein Terminal-Fenster und führen die folgenden Schritte aus:

  • Führen Sie den Befehl chsh aus
  • Tippen Sie das Passwort des Users ein
  • Sobald Sie dazu aufgefordert werden, geben Sie /bin/sh als neue Shell ein
  • Führen Sie su USERNAME (ersetzen Sie USERNAME entsprechend) aus
  • Geben Sie Ihr Passwort ein

Ist der Umstieg auf Bourne erfolgreich, dann ändert sich die Shell von USER@HOSTNAME:~$ – wobei USER Ihr Anwendername und HOSTNAME der Name des Computers ist – zu lediglich $.

Sie sollten beachten, dass die Bourne Shell auf den meisten Linux-Distributionen eine Iteration ist. Es handelt sich dabei sehr wahrscheinlich um eine POSIX-Shell (Portable Operating System Interface). Wollen Sie die echte Bourne Shell benutzen, kommen Sie nicht umhin, FreeBSD oder Unix einzusetzen.

Bash verwendet die gleiche Grammatik, dieselben Parameter und Variablen-Erweiterungen, Umleitungen und Anführungszeichen wie die Bourne Shell. Allerdings setzt Bash auf den POSIX-Standard, um kompatibel zu sein.

POSIX ist ein IEEE-Standard (Institute of Electrical and Electronics Engineers) der die Portabilität und Kompatibilität von Applikationen gewährleisten. POSIX bildet einen einzigen, vereinheitlichten Standard für Unix. Solange Entwickler ein Betriebssystem veröffentlichen, das dem POSIX-Standard entspricht, können sie ihre Plattform als POSIX-kompatibel bezeichnen.

Wie unterscheidet sich die Bourne Shell von Bash?

Bash ist im Grunde genommen die Bourne Shell mit mehr Funktionen. Die meisten Befehle funktionieren zwar ähnlich, es gibt jedoch Unterschiede bei den Schnittstellen und der Skriptkompatibilität.

Der erste Unterschied ist, dass bei Bourne all die Annehmlichkeiten der Bash fehlen. Sehr offensichtlich ist in Bourne das Fehlen der farblichen Markierungen, die in der Bash angezeigt werden (siehe Abbildung 1).

Zum Beispiel sind Verzeichnisse blau, ausführbare Dateien weinrot und nicht ausführbare Dateien sind je nach Hintergrundfarbe schwarz oder weiß.

Abbildung 1: Bei Elementary OS zeigt die Bash alle Verzeichnisse in Blau an.
Abbildung 1: Bei Elementary OS zeigt die Bash alle Verzeichnisse in Blau an.

Wechseln Sie zu Bourne oder dem Linux-Äquivalent, erhalten Sie einfach nur einen weißen Text auf dem transparenten Terminal-Hintergrund (siehe Abbildung 2).

Sehr lange war in modernen Linux-Systemen /bin/sh einfach eine Verknüpfung zu /bin/bash und optisch war kein Unterschied zu erkennen. Im Laufe der Zeit wurden für die Bash diverse Erweiterungen programmiert und sie wurde damit leistungsstärker und auch flexibler als die Bourne Shell.

Irgendwann war Bourne unter Linux nicht mehr verfügbar. Sie wurde durch Bourne-kompatible Shells (wie zum Beispiel sh und dash) ersetzt. Selbst wenn Sie unter Linux auf sh umstellen und die Shell wie Bourne benutzen können, handelt es sich dabei sehr wahrscheinlich um eine moderne Iteration davon.

Abgesehen von den Farben liegt ein Hauptunterschied der beiden Shells bei der Skriptkompatibilität. Schreiben Sie ein Skript mit der Bourne Shell, dann läuft es sehr wahrscheinlich auch mit der Bash. Modifikationen sind meist keine notwendig.

Abbildung 2: Sobald Sie auf Bourne umstellen, ist alles monochrom.
Abbildung 2: Sobald Sie auf Bourne umstellen, ist alles monochrom.

Schreiben Sie allerdings ein Skript mit der Bash, müssen Sie es in den meisten Fällen anpassen, damit Sie es mit der Bourne Shell ausführen können. Wissen Sie bereits, dass Ihr Skript mit mehreren Shells benutzt wird, dann halten Sie sich am besten an die Bourne-Kompatibilität und die entsprechenden Spezifikationen.

Sehen wir uns als Beispiel das Shell-Skript Hello World genauer an. Schreiben wir es mit der Bourne Shell, dann könnte das Skript so aussehen:

#!/bin/sh

# Our Hello World Script

echo Hello World

Für die Bash geschrieben, sieht das gleiche Skript wie folgt aus:

#!/bin/bash

# declare STRING variable

STRING="Hello World"

#print variable on a screen

echo $STRING

Beide Skripte laufen sowohl unter der Bourne Shell als auch der Bash – in gewisser Weise. Denn das liegt bei modernen Linux-Distributionen sehr wahrscheinlich daran, dass Sie beim Umstieg auf sh eine POSIX-kompatible Shell nutzen. Weil Bash komplett rückwärtskompatibel zu sh ist, funktionieren für sh geschriebene Skripte mit der Bash.

Weil Bourne nicht vorwärtskompatibel zur Bash ist, läuft nicht jedes Bash-Skript mit der Bourne Shell. Führen Sie das zweite Skript unter FreeBSD aus, könnte es zu Problemen kommen.

Erfahren Sie mehr über Desktop-Management