Was ist die Bourne Shell?

Die Bourne-Shell ist ein kleines Programm, das auf Unix®- und LINUX®-Betriebssystemen ausgeführt wird und eine Schnittstelle zum Ausführen von Programmen auf dem System bietet. Es wird häufig als Befehlszeilenschnittstelle oder Befehlsinterpreter bezeichnet, da es dem Benutzer keine grafische Benutzeroberfläche (GUI) bietet. Befehle und alle erforderlichen Parameter, die ausgeführt werden sollen, werden in die Shell eingegeben. Die Bourne-Shell ist auch eine Skriptsprache, mit der Benutzer Skriptdateien erstellen und ausführen können, die mit einem einzigen Befehl Daten über mehrere Programme verarbeiten können. Auf Unix®-ähnlichen Systemen wird das Programm einfach als "sh" bezeichnet.

Die ersten derartigen Shells für Unix®-Systeme waren als Thompson-Shell bekannt, die von Ken Thompson, einem der ursprünglichen Entwickler des Unix®-Betriebssystems, erstellt wurde. Die Thompson-Shell war auf die Befehlsinterpretation beschränkt, und eine Reihe zusätzlicher Funktionen mussten als externe Operationen ausgeführt werden. Später erstellte Stephen Bourne die Bourne-Shell als Ersatz für die Thompson-Shell und fügte der Shell selbst eine Reihe neuer Funktionen sowie die Skriptsprache der Shell hinzu.

In Wirklichkeit war die Bourne-Shell von Anfang an als Skriptsprache geplant. Während es noch die Befehlszeilenschnittstelle für Unix® Version 7 war, eröffnete es Benutzern auch die Möglichkeit, Shell-Skripte zu entwickeln, die Befehle miteinander verknüpfen, um Daten zu verarbeiten. Durch die Verwendung dieser Programmierung kann der Benutzer Variablen zum Erfassen bekannter oder unbekannter Daten aus der Eingabe oder Ausgabe festlegen und die Verarbeitung dieser Daten durch die Verwendung von bedingten Anweisungen im Skript über eine als Kontrollfluss bezeichnete Technik manipulieren.

Dies war auch die erste Shell, die eine Funktion implementiert hat, die als Signalbehandlung bekannt ist. Über die Bourne-Shell kann ein Benutzer einen bestimmten Signaltyp an einen Prozess senden, der bereits auf dem Computer ausgeführt wird, und diesen Prozess anweisen, etwas anderes zu tun. Mit vielen dieser Methoden können Sie einen Prozess stoppen, der gerade ausgeführt wird, und eine Art Ausgabe erzeugen, die zum Debuggen verwendet werden kann. Es gibt jedoch auch andere Methoden, um einen Prozess vorübergehend anzuhalten, fortzusetzen und so weiter.

Die Möglichkeit, Dateideskriptoren direkt zu steuern, war eine weitere Neuerung für die Bourne-Shell. Auf einem Unix®-ähnlichen System verfügt jedes ausgeführte Programm über eine Tabelle, in der die Dateideskriptoren für alle geöffneten Dateien aufgelistet sind. Dies kann alles umfassen, von einer einfachen Textdatei bis hin zu einem Verzeichnis oder sogar den Kommunikationssockets, über die Prozesse Daten untereinander austauschen. Damit ein Benutzer die Kontrolle über die Dateideskriptoren auf einem System hat, konnte er die Ein- und Ausgabe für praktisch alles auf dem Computer in bisher unerreichter Weise kontrollieren.

Obwohl die Bourne-Shell den Benutzern eine solche zusätzliche Funktionalität bot, fehlten Funktionen wie die Möglichkeit, Prozesse interaktiv zu steuern, Befehls-Aliase zu erstellen und einen Verlauf beizubehalten. Später tauchten jedoch eine Reihe von Nachkommen auf, die die nützlichsten Schalenmerkmale verwendeten, die im Laufe der Jahre entwickelt worden waren, und sie zu neuen Schalen zusammenrollten. Ein häufiges Beispiel ist die Bourne-again-Shell oder Bash, die auf vielen LINUX®-Systemen üblich ist. Infolgedessen sind viele dieser Nachkommen in der Lage, reguläre Bourne-Shell-Skripte auszuführen, wodurch jedes Unix-ähnliche System auf die eine oder andere Weise eine Implementierung der ursprünglichen Bourne-Shell erhält. Auf vielen LINUX®-Systemen ist dies einfach eine Verknüpfung von "sh" zu "bash" oder einem anderen fähigen Nachkommen.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?