Thompson-Schale - Thompson shell
| Originalautor(en) | Ken Thompson |
|---|---|
| Entwickler | AT&T Bell Laboratories |
| Erstveröffentlichung | 3. November 1971 |
| Betriebssystem | Unix und Unix-like |
| Typ | Unix-Shell |
Die Thompson-Shell war die erste Unix-Shell , die 1971 in der ersten Unix- Version eingeführt wurde und von Ken Thompson geschrieben wurde . Es war ein einfacher Befehlsinterpreter, der nicht für die Skripterstellung entwickelt wurde, aber dennoch einige innovative Funktionen in die Befehlszeilenschnittstelle einführte und zur Entwicklung der späteren Unix-Shells führte.
Geschichte
Der Name „Shell“ für einen Kommandozeileninterpreter und das Konzept der Herstellung der Schale ein Anwenderprogramm außerhalb des Betriebssystemkern wurden in Unix des Vorläufers eingeführt Multics .
Ein frühes Merkmal der Thompson-Shell war eine kompakte Syntax für die Ein-/Ausgabe-Umleitung. In Multics erforderte das Umleiten der Eingabe oder Ausgabe eines Befehls separate Befehle, um die Umleitung zu starten und zu stoppen. unter Unix könnte man einfach ein Argument zur Befehlszeile hinzufügen, das aus dem <-Symbol gefolgt von einem Dateinamen für die Eingabe oder dem >-Symbol für die Ausgabe besteht, und die Shell würde die E/A für die Dauer des Befehls umleiten. Diese Syntax war bereits bei der Veröffentlichung der ersten Unix-Version im Jahr 1971 vorhanden.
Eine spätere Ergänzung war das Konzept der Pfeifen . Auf Anregung von Douglas McIlroy wurde die Umleitungssyntax so erweitert, dass die Ausgabe eines Befehls an die Eingabe eines anderen Befehls übergeben werden konnte. Die ursprüngliche Pipe-Syntax, wie im Handbuch von Version 3 beschrieben, lautete:
command1 >command2>
Diese Syntax erwies sich als zu mehrdeutig und wurde leicht mit der Umleitung zu und von Dateien verwechselt – das System kann nicht erkennen, ob "command2" der Befehl "command2" oder die Datei "command2" ist. In Version 4 wurde die Syntax geändert, um sowohl die | und ^ Symbole zur Bezeichnung von Rohren:
command1 | command2
Dies führt zu genau dem gleichen Ergebnis wie:
command1 ^ command2
Das >-Symbol änderte sich in:
command1 > file1
Dies würde die Ausgabe von command1 in file1 ablegen.
Die Thompson-Shell-Syntax für Umleitung mit < und > und Piping mit | hat sich als dauerhaft erwiesen und wurde von den meisten anderen Unix-Shells und Befehls-Shells mehrerer anderer Betriebssysteme übernommen, insbesondere unter DOS , OS/2 und Microsoft Windows .
Ablehnen und Ersatz
Das Design der Schale war absichtlich minimalistisch; sogar die if- und goto- Anweisungen, die für die Steuerung des Programmablaufs unerlässlich sind, wurden als separate Befehle implementiert. Als Ergebnis wurde 1975 mit der Veröffentlichung von Version 6 Unix klar, dass die Thompson-Shell für die meisten ernsthaften Programmieraufgaben ungeeignet war.
Zu dieser Zeit begannen die Entwickler der Programmer's Workbench UNIX- Distribution, allen voran John Mashey , damit, die Thompson-Shell zu modifizieren, um sie für die Programmierung besser geeignet zu machen. Das Ergebnis, bekannt als PWB-Shell oder Mashey-Shell, umfasste fortschrittlichere Mechanismen zur Flusskontrolle und eingeführte Shell-Variablen, blieb jedoch durch die Notwendigkeit begrenzt, mit der Thompson-Shell kompatibel zu bleiben.
Schließlich wurde die Thompson-Shell als Haupt-Unix-Shell durch die Bourne-Shell in Version 7 Unix und die C-Shell in 2BSD ersetzt , die beide 1979 veröffentlicht wurden. Da praktisch alle modernen Unix- und Unix-ähnlichen Systeme von V7 und 2BSD abstammen, Die Thompson-Shell wird im Allgemeinen nicht mehr verwendet. Es ist jedoch als Open-Source als Teil mehrerer Ancient-Unix- Quelldistributionen verfügbar und wurde als historisches Exponat auf moderne Unices portiert.
Siehe auch
Verweise
Externe Links
- Handbuchseite für die Thompson-Shell in Unix 1st Edition .
- Die Evolution des Unix Time-Sharing-Systems - beschreibt die frühe Entwicklung der Shell
- Ursprünge der Bourne-Shell - Handbuchseiten für die Thompson-Shells der 3., 4. und 6. Ausgabe und andere Ressourcen zu den frühen Shells
- Sixth Edition Thompson Shell Port - die Thompson-Shell und die zugehörigen Dienstprogramme, portiert auf moderne Unix-Systeme