Thompson schelp - Thompson shell
| Oorspronkelijke auteur(s) | Ken Thompson |
|---|---|
| Ontwikkelaar(s) | AT&T Bell Laboratoria |
| Eerste uitgave | 3 november 1971 |
| Besturingssysteem | Unix en Unix-achtig |
| Type | Unix-shell |
De Thompson-shell was de eerste Unix-shell , geïntroduceerd in de eerste versie van Unix in 1971, en werd geschreven door Ken Thompson . Het was een eenvoudige commando-interpreter, niet ontworpen voor scripting, maar desalniettemin introduceerde het verschillende innovatieve functies in de opdrachtregelinterface en leidde het tot de ontwikkeling van de latere Unix-shells.
Geschiedenis
De naam "shell" voor een opdrachtregelinterpreter en het concept om van de shell een gebruikersprogramma te maken buiten de kernel van het besturingssysteem, werden geïntroduceerd in Unix' voorloper Multics .
Een vroeg kenmerk van de Thompson-shell was een compacte syntaxis voor input/output-omleiding. In Multics vereiste het omleiden van de invoer of uitvoer van een opdracht afzonderlijke opdrachten om de omleiding te starten en te stoppen; in Unix zou men eenvoudig een argument aan de opdrachtregel kunnen toevoegen, bestaande uit het symbool < gevolgd door een bestandsnaam voor invoer of het symbool > voor uitvoer, en de shell zou I/O omleiden voor de duur van het commando. Deze syntax was al aanwezig bij de release van de eerste versie van Unix in 1971.
Een latere toevoeging was het begrip buizen . Op voorstel van Douglas McIlroy werd de omleidingssyntaxis uitgebreid, zodat de uitvoer van een commando kon worden doorgegeven aan de invoer van een ander commando. De originele pipe-syntaxis, zoals beschreven in de versie 3 handleiding, was:
command1 >command2>
Deze syntaxis bleek te dubbelzinnig en werd gemakkelijk verward met omleiding van en naar bestanden - het systeem kan niet bepalen of "command2" het commando "command2" of het bestand "command2" is. In versie 4 was de syntaxis gewijzigd om zowel de | en ^ symbolen om pijpen aan te duiden:
command1 | command2
Dit levert precies hetzelfde resultaat op als:
command1 ^ command2
Het > symbool veranderde in:
command1 > file1
Dit zou de uitvoer van command1 in file1 plaatsen.
De Thompson shell-syntaxis voor omleiding met < en >, en piping met |, is duurzaam gebleken en is overgenomen door de meeste andere Unix-shells en opdrachtshells van verschillende andere besturingssystemen, met name op DOS , OS/2 en Microsoft Windows .
Weigeren en vervangingen
Het ontwerp van de schaal was opzettelijk minimalistisch; zelfs indien en goto statements, van essentieel belang voor de controle van het programma flow, werden geïmplementeerd als afzonderlijke opdrachten. Als gevolg hiervan werd het bij de release van versie 6 Unix in 1975 duidelijk dat de Thompson-shell niet geschikt was voor de meeste serieuze programmeertaken.
Op dat moment begonnen de ontwikkelaars van de Programmer's Workbench UNIX- distributie, met name John Mashey , de Thompson-shell aan te passen om deze geschikter te maken voor programmeren. Het resultaat, bekend als de PWB-schaal of de Mashey-schaal, omvatte meer geavanceerde stroomregelingsmechanismen en introduceerde schaalvariabelen, maar bleef beperkt door de noodzaak om compatibel te blijven met de Thompson-schaal.
Ten slotte werd de Thompson-shell als de belangrijkste Unix-shell vervangen door de Bourne-shell in versie 7 Unix en de C-shell in 2BSD , beide uitgebracht in 1979. Aangezien vrijwel alle moderne Unix- en Unix-achtige systemen afstammen van V7 en 2BSD, is de Thompson shell wordt over het algemeen niet meer gebruikt. Het is echter beschikbaar als open-source als onderdeel van verschillende oude Unix- brondistributies en is overgezet naar moderne Unices als een historische tentoonstelling.
Zie ook
Referenties
Externe links
- Handleiding pagina voor de Thompson shell in Unix 1st Edition .
- De evolutie van het Unix Time-Sharing System - beschrijft de vroege ontwikkeling van de shell
- Oorsprong van de Bourne shell - handleidingen voor de 3e, 4e en 6e editie Thompson shells, en andere bronnen op de vroege shells
- Zesde editie Thompson Shell Port - de Thompson shell en de bijbehorende hulpprogramma's geport naar moderne Unix-systemen