Bourne shell

Bourne Shell
Version 7 UNIX SIMH PDP11 Kernels Shell.png
Bourne Shell -Interaktion auf Version 7 Unix
Originalautor (en) Stephen Bourne
Entwickler (en) Bell Telefonlabors
Erstveröffentlichung 1979; Vor 43 Jahren
Betriebssystem Unix
Typ Unix Shell
Lizenz [Unter Diskussion]

Das Bourne Shell (Sch) ist ein Hülse Befehlszeilen-Interpreter für Computer Betriebssysteme.

Die Bourne Shell war der Standard Hülse zum Version 7 Unix. Unix-artig Systeme haben weiterhin /bin/sh- Welches wird die Bourne Shell oder a sein symbolischer Link oder harte Verbindung zu einer kompatiblen Hülle - auch wenn andere Shells von den meisten Benutzern verwendet werden.

Entwickelt von Stephen Bourne bei Bell Labs, es war ein Ersatz für die Thompson Shell, deren ausführbare Datei den gleichen Namen hatte -Sch. Es wurde 1979 in der Version 7 Unix veröffentlicht, die an Hochschulen und Universitäten verteilt ist. Obwohl es als interaktiver Befehlskoltereter verwendet wird, war es auch als gedacht Skriptsprache und enthält die meisten Merkmale, die allgemein als strukturierte Programme erzeugen.

Es wurde mit der Veröffentlichung von Popularität gewonnen Die UNIX -Programmierumgebung durch Brian Kernighan und Rob Pike- Das erste kommerziell veröffentlichte Buch, das die Shell als Programmiersprache in Tutorialform präsentierte.

Geschichte

Version 7 Unix: Die ursprüngliche Bourne Shell Handbuch Seite. PDP-11 Simulation mit Simh

Ursprünge

Die Arbeiten an der Bourne Shell begannen ursprünglich 1976.[1] Zuerst erscheinen in Version 7 Unix,[2] Die Bourne Shell ersetzte die Mashey Shell.

Einige der Hauptziele der Shell waren:[3]

  • Erlauben Shell -Skripte verwendet werden als Filter.
  • Programmierbarkeit einschließlich der Bereitstellung Steuerfluss und Variablen.
  • Steuerung aller Eingangs-/Ausgabesteuerung Dateideskriptoren.
  • Kontrolle über Signalhandhabung Innerhalb von Skripten.
  • Keine Grenzen der Stringlängen beim Interpretieren von Shell -Skripten.
  • Rationalisierung und verallgemeinerte String -Zitat -Mechanismus.
  • Das Umweltmechanismus. Dies ermöglichte den Kontext bei Startup und bietet Shell -Skripten eine Möglichkeit, den Kontext an Sub -Skripte zu übergeben (Prozesse) ohne explizit einsetzen zu müssen Positionsparameter.

Funktionen der Originalversion

Zu den Funktionen der Version 7 Unix Bourne Shell gehören:

  • Skripte können als Befehle mithilfe ihres Dateinamens aufgerufen werden
  • Kann interaktiv oder nicht interaktiv verwendet werden
  • Ermöglicht sowohl synchrone als auch asynchrone Ausführung von Befehlen
  • Unterstützt Eingabe- und Ausgangsumleitung und Pipelines
  • Bietet eine Reihe integrierter Befehle
  • Bietet Flusssteuerungskonstrukte, Anführungsmöglichkeiten und Funktionen.
  • Typlose Variablen
  • Bietet einen lokalen und globalen variablen Umfang
  • Skripte erfordern vor der Ausführung keine Kompilierung
  • Hat keine GOTO -Einrichtung, daher kann eine Umstrukturierung von Code erforderlich sein
  • Befehlssubstitution Verwendung Rückquoten: `command`.
  • Hier Dokumente Verwendung << Einen Eingabettext in ein Skript einbetten.
  • für ~ ~ fertig Schleifen, insbesondere die Verwendung von $* Sowohl für ~ in ~ do ~ fertig Schleifen zum Iterieren über Listen.
  • Fall ~ in ~ esac Auswahlmechanismus, der hauptsächlich helfen soll Argument analysieren.
  • Sch Unterstützung für Umgebungsvariablen mithilfe von Schlüsselwortparametern und exportierbaren Variablen.
  • Enthält stark Ausdrucksübereinstimmung Einrichtungen.

Die Bourne Shell war auch der erste, der die Konvention verwendet hat Dateideskriptor 2> zum Fehlermeldungenund ermöglichen eine viel größere programmatische Steuerung während des Skripts, indem Fehlermeldungen von den Daten getrennt werden.

Stephen Bournees Kodierungsstil wurde von seiner Erfahrung mit dem beeinflusst Algol 68c Compiler[2] dass er bei gearbeitet hatte Universität von Cambridge. Zusätzlich zu dem Stil, in dem das Programm geschrieben wurde Algol 68's Wenn ~ dann ~ elif ~ dann ~ sonst ~ fi, Fall ~ in ~ esac und für/während ~ ~ od"(Verwendung erledigt Anstatt von Od) Klauseln im gemeinsamen Unix Bourne Shell Syntax. Darüber hinaus - obwohl die V7 -Shell geschrieben ist in C - Bourne nutzte einige Makros[4] das c geben Quellcode Ein Algol 68 -Geschmack. Diese Makros (zusammen mit dem Finger Befehl in Unix -Version verteilt 4.2bsd) inspirierte die Internationaler Verschleierter C -Code -Wettbewerb (IOCCC).[5]

Nach 1979 eingeführte Funktionen

Im Laufe der Jahre wurde die Bourne Shell bei AT & T verbessert. Die verschiedenen Varianten werden daher als die jeweilige AT & T -UNIX -Version bezeichnet, die mit (einige wichtige Varianten sind Version7, Systemiii, SVR2, SVR3, SVR4) veröffentlicht wurden. Da die Shell nie versioniert wurde, bestand die einzige Möglichkeit, ihre Funktionen zu testen.[6]

Zu den Merkmalen der Bourne Shell -Versionen seit 1979 gehören:[7]

  • Eingebaut test Kommando - System III Shell (1981)
  • # als Kommentarcharakter - System III Shell (1981)
  • Dickdarm in Parameter -Substitutionen "$ {Parameter: = Wort}" - System III Shell (1981)
  • continue mit Argument - System III Shell (1981)
  • cat <<-EOF Für Eingerichte hier Dokumente - System III Shell (1981)
  • Funktionen und die return BAUNING - SVR2 Shell (1984)
  • Eingebaut unset, echo, type - SVR2 Shell (1984)
  • Quellcode De-Algol68-IDED-SVR2 Shell (1984)
  • Modern "$@" - SVR3 Shell (1986)
  • Eingebaut getopts - SVR3 Shell (1986)
  • Das gereinigte Parameterhandling ermöglicht rekursiv aufrufbare Funktionen - SVR3 Shell (1986)
  • 8-Bit Clean-SVR3 Shell (1986)
  • Jobkontrolle - SVR4 Shell (1989)
  • Multi-Byte-Unterstützung-SVR4 Shell (1989)

Varianten

Dmert Shell

Duplex Multi-Environment Echtzeit (Dmert) ist ein hybrides Zeit Sharing-/Echtzeit-Betriebssystem, das in den 1970er Jahren im Bell Labs Indian Hill Standort in entwickelt wurde Naperville, Illinois Verwendet einen Snapshot von 1978 von Bourne Shell "Version SYS137 Datum 1978 12. Oktober 22:39:57". Die Dmert -Shell läuft weiter 3b21d Computer, die noch in der Telekommunikationsbranche verwendet werden.

Korn Shell

Interagieren mit pdksh in OpenBSD (Standardschale)

Das Korn Shell (ksh) geschrieben von David Korn Basierend auf dem ursprünglichen Bourne -Shell -Quellcode,[8] war eine mittlere Straße zwischen der Bourne Shell und der C Shell. Seine Syntax wurde hauptsächlich aus der Bourne -Shell gezogen, während es ihre Jobkontrolle Merkmale ähnelten denen der C -Schale. Die Funktionalität der ursprünglichen Korn Shell (bekannt als KSH88 ab dem Jahr ihrer Einführung) wurde als Grundlage für die Posix Shell Standard. Eine neuere Version, KSH93, ist seit 2000 Open Source und wird für einige verwendet Linux -Verteilungen. Ein Klon von KSH88 bekannt als pdksh ist die Standardschale in OpenBSD.

Schilien Bourne Shell

Die Schilien-Tools von Jörg Schilling umfasst drei Bourne-Shell-Derivate.[9]

Beziehung zu anderen Muscheln

C Shell

Bill Joy, der Autor der C Shell, kritisierte die Bourne Shell als unfreundlich für den interaktiven Gebrauch,[10] Eine Aufgabe, für die Stephen Bourne selbst C Shells Überlegenheit anerkannte. Bourne erklärte jedoch, dass seine Hülle für das Scripting überlegen war und auf jedem Unix -System verfügbar war.[11] und Tom Christiansen Auch kritisierte C -Shell als ungeeignet für Skript und Programmierung.[12]

Almquist -Muscheln

Aufgrund von Urheberrechtsproblemen rund um die Bourne Shell, wie sie in historisch verwendet wurde CSRG BSD -Veröffentlichungen entwickelte Kenneth Almquist einen Klon der Bourne -Shell, der von einigen als die bekannt ist Almquist Shell und verfügbar unter dem BSD -Lizenz, der heute bei einigen BSD-Nachkommen und in niedrigem Memory-Situationen verwendet wird. Die almquistische Shell wurde auf Linux portiert und der Port umbenannt in die Debian Almquist Shell, oder Dash. Diese Shell bietet eine schnellere Ausführung des Standards Sch (und Possix-Standard Sch, in modernen Nachkommen) Skripte mit einem kleineren Gedächtnis -Fußabdruck als sein Gegenstück, bash. Seine Verwendung neigt dazu zu entlarven Bashismen -Bash-zentrierte Annahmen in Skripten, die auf SH ausgeführt werden sollen.

Andere Muscheln

Verwendungszweck

Die Bourne Shell war einst bei allen Marken Standard Unix Systeme, wenn auch historisch BSD-basierte Systeme hatten viele Skripte geschrieben CSH. Als Grundlage von Posix Sch Syntax-, Bourne -Shell -Skripte können normalerweise mit ausgeführt werden Verprügeln oder Bindestrich an Linux oder andere Unix-artig Systeme.

Siehe auch

Verweise

  1. ^ https://www.bsdcan.org/2015/schedule/events/612.en.html Stephen Bourne Keynote für BSDCAN 2015
  2. ^ a b McIlroy, M. D. (1987). A Research Unix Reader: Annotierte Auszüge aus dem Programmierhandbuch, 1971–1986 (PDF) (Technischer Bericht). Cstr. Bell Labs. 139.
  3. ^ "Der A-Z der Programmiersprachen: Bourne Shell oder SH". Computerworld.com.au. Archiviert von das Original am 11. Januar 2010. Abgerufen 6. März 2009.
  4. ^ Bourne, Steve (12. Januar 1979). "Mac.h - Makros, die von Bourne verwendet werden, um C wie Algol68c zu strukturieren". AT&T Corporation. Abgerufen 9. September 2006.
  5. ^ Landon Curt Noll; Simon Cooper; Peter Seebach & Leonid A. Broukhis (2004). "Die IOCCC -FAQ - Q/A: Wie hat das IOCCC angefangen?". ioccc.org. Abgerufen 9. September 2006.
  6. ^ "Was für eine Hülle ist das?". www.in-ulm.de.
  7. ^ "Traditionelle Bourne Shell Familie / Geschichte und Entwicklung". www.in-ulm.de.
  8. ^ Korn, David G. (26. Oktober 1994), "KSH - Eine erweiterbare Sprache auf hoher Ebene", Proceedings of the Usenix 1994 Sehr hohe Sprachen Symposium, Usenix Association, abgerufen 5. Februar 2015, Anstatt eine neue Skriptsprache zu erfinden, haben wir ein Formulareintragssystem erstellt, indem wir die Bourne-Shell geändert haben und nach Bedarf integrierte Befehle hinzugefügt haben.
  9. ^ "Schily Bourne Shell - Eine moderne, verbesserte und posix -konforme Bourne Shell -Quelle von Jörg Schilling". Schile-Tools.
  10. ^ Eine Einführung in die C Shell durch Bill Joy.[Seite benötigt]
  11. ^ Bourne, Stephen R. (Oktober 1983). "Die Unix -Shell". BYTE. p. 187. Abgerufen 30. Januar 2015.
  12. ^ Tom Christiansen (28. September 1995). "CSH -Programmierung als schädlich angesehen". Abgerufen 17. Februar 2014.

Externe Links