osh
Der mit UNIX ab 1969 entwickelte Kommandozeileninterpreter sh
wird retronym als Thompson-Shell bezeichnet, nach dessen Entwickler Ken Thompson.[1] Urspünglich in Assembler geschrieben wurde die originale Unix-Shell 1973 gemeinsam mit UNIX Version 4 und in C neu implementiert.
Die Thompson-Shell ist eine erste, sehr rudimentäre Variante einer Unix-Shell, jedoch gehen alle späteren, verbesserten und erweiterten Unix-Shells auf die originale Thompson-Shell zurück. Auf modernen Unix- und Unix-artigen Systemen wird sie nicht mehr verwendet, allerdings wurde die letzte Version mit osh, für englisch old shell („Alte Shell“), bzw. etsh für moderne System reimplementiert.
Geschichte[Bearbeiten]
UNICS, wie das System 1969 als Wortwitz und Anspielung auf das gescheiterte Betriebssystemprojekt MULTICS genannt wurde, bediente sich an einigen der Konzepte von Multics, bei dem Dennis Ritchie kurze Zeit mitgearbeitet hatte.[2] So bestand UNIX, der Bezeichnung ab ca. 1970, neben dem Kernel im weiteren aus den Kernbestandteilen Unix-Dateisystem und Unix-Shell.
Thompson-Shell ist die retronyme Bezeichnung für diese früheste Implementierung eines Unix-Befehlsinterpreters, die Shell war bereits Bestandteil der ersten Unix-Edition von 1971. Die heute gängige Syntax – die Verwendung von Größer- und Kleiner-Zeichen – für Umleitungen von Eingaben und Ausgaben stammt von dieser von Kenneth Thompson geschriebenen Shell ab. Das Befehls- und Filterketten-Konzept (pipes) von Doug McIlroy wurde 1972 in der Thompson-Shell realisiert.
Bis 1979 war die Thompson-Shell die Standard-Shell von AT&T UNIX. Sie wurde von der Bourne-Shell abgelöst.
Merkmale[Bearbeiten]
Die Thompson-Shell verfügt über die Kerneigenschaften der 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 anderen Unix-Shells, die Befehlsinterpreter und Programmiersprachen sind, verfügt osh über keine eigenen Programmierkonstrukte. Die Anweisungen if
und goto
sind als separate Befehle implementiert, mit denen bestimmte Programmieraufgaben (bedingte Steuerungen des Programmablaufs) gelöst werden können. Es können somit keine Variablen vereinbart werden, da jedoch dem Befehlsinterpreter mehrere Argumente übergeben werden können, lassen sie sich teilweise durch Aufrufe neuer Shell-Instanzen simulieren.
Reimplementierung[Bearbeiten]
Im Unterschied zur Unix-Shell aus den frühen 1970er Jahren lassen sich in osh und etsh Umgebungsvariablen direkt vereinbaren. Bei der Nutzung als primäre Shell liest osh eine vom Anwender geschriebene Profildatei, in der z. B. Pfadinformationen angepasst werden können.
Literatur[Bearbeiten]
- 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[Bearbeiten]
- Website der
osh
und des Nachfolgeprojektsetsh
- sh Handbuchseite (1973): http://www.in-ulm.de/~mascheck/bourne/v3/
Einzelnachweise[Bearbeiten]
- ↑ University of Michigan (Hrsg.): Programmer's Journal. Band 5. Avant-Garde Creations, 1987, S. 16 (english, keine Vorschau verfügbar): “Ken Thompson, the father of Unix, wrote the very first rudimentary command interface for Ma Bell's OS—in typical researcher fashion calling it the Thompson shell.”
- ↑ Isrd: Basics Of Os Unix And Shell Programming. Tata McGraw-Hill Education, 2006, ISBN 978-0-07-061681-3 (english, eingeschränkte Vorschau in der Google-Buchsuche): “MULTICS exerted a strong influence on the new operating system. The basic file system organization, the idea of the shell as a user process, use of separate process for each command and similar other features were inherited from it.”
Diese artikel "Osh" ist von Wikipedia The list of its authors can be seen in its historical and/or the page Edithistory:Osh.
![]() |
This page exists already on Wikipedia. |