Zum Inhalt springen

Thompson-Shell

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 14. Februar 2023 um 17:23 Uhr durch imported>Invisigoth67 (typo).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Der mit UNIX ab 1969 entwickelte Kommandozeileninterpreter sh wird retronym nach dessen Entwickler Ken Thompson als Thompson-Shell bezeichnet.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Ursprünglich in Assembler geschrieben, wurde die originale Unix-Shell 1973 gemeinsam mit UNIX Version 4 in C neu implementiert.

Die Thompson-Shell ist eine erste, sehr rudimentäre Variante einer Unix-Shell, jedoch gehen viele spätere, verbesserte und erweiterte Unix-Shells auf sie zurück. Auf modernen Unix- und Unix-artigen Systemen wird sie nicht mehr verwendet, allerdings wurde die letzte Version für moderne Systeme reimplementiert.

Geschichte

Skriptfehler: Ein solches Modul „Vorlage:Siehe auch“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Siehe auch“ ist nicht vorhanden. UNICS, wie das System 1969 als Wortwitz und Anspielung auf das frühere Betriebssystemprojekt Multics genannt wurde, bediente sich an einigen der Konzepte von Multics, an dem einige spätere Unixentwickler wie Ken Thompson, Doug McIlroy, Dennis Ritchie und Joseph Ossanna kurze Zeit mitgearbeitet hatten.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Eines davon war die Shell.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> So bestand UNIX – die Schreibweise wurde spätestens 1971 mit der Veröffentlichung der ersten Version verwendet – neben dem Kernel im Weiteren aus den Kernbestandteilen Unix-Dateisystem und Unix-Shell.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Bereits 1972 wurde das Befehls- und Filterketten-Konzept (pipes) von Doug McIlroy in dieser Shell realisiert.

Die Thompson-Shell (sh) war bis zur Veröffentlichung von V7 UNIX (1979) die Standard-Shell von AT&T-UNIX. Bereits in den 1970er Jahren wurde von Stephen R. Bourne eine verbesserte Unix-Shell entwickelt, die ab V7 UNIX die Thompson-Shell ablöste. Die Bourne-Shell wird ebenfalls mit sh ausgeführt. Doch auch weitere, spätere, modernere Unix-Shells verwenden neben dem ausführbaren Dateinamen die von der Thompson-Shell eingeführte Syntax; unter anderem die Verwendung von Größer- und Kleiner-Zeichen für Umleitungen von Eingaben und Ausgaben wurden zuerst in der Thompson-Shell verwendet.

Merkmale

Die Thompson-Shell verfügt über die Kerneigenschaften einer Unix-Shell:

  • Befehls- bzw. Filterketten (Pipes, „Rohrleitungen“)
  • Umleitung von Programmeingaben und -ausgaben
  • Zusammenfassungen von Befehlen bzw. Befehlsketten in Befehls-Dateien (Shell-Skripten)

Im Unterschied zu moderneren Unix-Shells, die Befehlsinterpreter und Programmiersprachen sind, verfügt die Thompson-Shell über keine eigenen Programmierkonstrukte. Die Anweisungen if und goto sind als separate Befehle implementiert, mit denen zwar bestimmte Programmieraufgaben (bedingte Steuerungen des Programmablaufs) gelöst werden können, aber es fehlt die Möglichkeit Variablen zu vereinbaren. Dem Befehlsinterpreter können jedoch mehrere Argumente übergeben werden, womit sich indirekt die Funktion von Variablen durch Aufrufe neuer Shell-Instanzen simulieren lässt.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Reimplementierung

Als osh wurde die Thompson-Shell für moderne Unix-artige Betriebssysteme reimplementiert. Die Bezeichnung kommt von Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden., „alte Shell“. Deren Nachfolger ist mit etsh die Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.. In beiden lassen sich im Unterschied zur originalen Thompson-Shell aus den frühen 1970er Jahren Umgebungsvariablen direkt setzen; auch lesen die Reimplementierungen bei der Nutzung als primäre Shell eine vom Anwender verwaltete Profildatei, z. B. zum Setzen von Pfadinformationen.

Literatur

  • Ken Thompson: The UNIX Command Language. In: Structured Programming – International Computer State of the Art Report, Infotech Information Ltd. Maidenhead, Berkshire, 1975, S. 375–384.

Weblinks

Einzelnachweise

<references />