Bourne shell
![]() Bourne Shell -Interaktion auf Version 7 Unix | |
Originalautor (en) | Stephen Bourne |
---|---|
Entwickler (en) | Bell Telefonlabors |
Erstveröffentlichung | 1979 |
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

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$*
Sowohlfü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
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
- Verprügeln (das BOURNE-AND-SCHRAUB) wurde 1989 für die entwickelt GNU -Projekt und enthält Funktionen aus der Bourne Shell, CSH und KSH. Es soll posix-konform sein.
- rc wurde bei Bell Labs durch Tom Duff als Ersatz für SH für Version 10 Unix. Es ist die Standardschale für Plan 9 von Bell Labs. Es wurde als Teil von auf Unix portiert Plan 9 aus dem Benutzerraum.
- Z Shell, entwickelt von Paul Falstad im Jahr 1990, ist eine erweiterte Bourne -Shell mit einer großen Anzahl von Verbesserungen, einschließlich einiger Merkmale von Verprügeln, ksh, und TCSH.
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
- ^ https://www.bsdcan.org/2015/schedule/events/612.en.html Stephen Bourne Keynote für BSDCAN 2015
- ^ 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.
- ^ "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.
- ^ 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.
- ^ 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.
- ^ "Was für eine Hülle ist das?". www.in-ulm.de.
- ^ "Traditionelle Bourne Shell Familie / Geschichte und Entwicklung". www.in-ulm.de.
- ^ 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.
- ^ "Schily Bourne Shell - Eine moderne, verbesserte und posix -konforme Bourne Shell -Quelle von Jörg Schilling". Schile-Tools.
- ^ Eine Einführung in die C Shell durch Bill Joy.[Seite benötigt]
- ^ Bourne, Stephen R. (Oktober 1983). "Die Unix -Shell". BYTE. p. 187. Abgerufen 30. Januar 2015.
- ^ Tom Christiansen (28. September 1995). "CSH -Programmierung als schädlich angesehen". Abgerufen 17. Februar 2014.
Externe Links
- Die einzelnen Mitglieder von "The Traditional Bourne Shell Family"
- "Charakteristische gemeinsame Eigenschaften der traditionellen Bourne -Muscheln"
- Historischer C -Quellcode für die Bourne Shell mit Mac.h -Makros von 1979
- Original Bourne Shell -Dokumentation von 1978
- Ein Hafen der "Erbstück" SVR4 Bourne Shell von OpenSolaris zu einigen anderen unixähnlichen Systemen
- Migrieren vom System V (SVR4) -Shülle zur POSIX -Schale
- Bourne Shell Tutorial (Syntax)
- FAQS -Shell -Unterschiede
- Howard Dahdah, der A-Z der Programmiersprachen: Bourne Shell oder SH-ein ausführliches Interview mit Steve Bourne, Schöpfer der Bourne Shell, oder Sh, Computerwelt, 5. März 2009.