Bourne shell: Porovnání verzí

Smazaný obsah Přidaný obsah
→‎RC: typogr., wl, upr. zamotaný překlad..      →‎Rc
Nový překlad
Řádek 1: Řádek 1:
{{Infobox - software
{{Přesnost}}
| jméno = Bourne shell
{{Infobox - software}}
| obrázek = Version 7 UNIX SIMH PDP11 Kernels Shell.png
'''Bourne shell''' (zkratka '''sh''') byl standardním [[Unixový shell|unixovým shellem]] pro systém [[Version 7 Unix]], který byl vydán v roce [[1977]] a byl distribuován školám a univerzitám. Jeho autorem je [[Stephen R. Bourne]] z [[AT&T]] [[Bell Laboratories]]. Bourne shell je soubor <code>/bin/sh</code> a zůstává stále implicitním shellem v mnoha unixových distribucích.
| popisek = Použití Bourne shellu na [[Version 7 Unix]]
| autor = [[Stephen R. Bourne|Stephen Bourne]]
| vývojář = [[Bellovy laboratoře]]
| první vydání = {{Počáteční datum a věk|1979}}
| programovací jazyk =
| operační systém = [[Unix]]
| typ softwaru = [[Unixový shell]]
}}


'''Bourne shell''' je [[interpret příkazů]] ([[Unixový shell|shell]]) pro [[Operační systém|operační systémy]] [[UN*X|vycházející ze systému Unix]]. Byl implicitním [[Unixový shell|shellem]] ve [[Version 7 Unix]] a ve většině [[UN*X|unixových]] systémů je <code>/bin/sh</code> stále Bourne shell nebo [[Symbolický odkaz|symbolický]] či [[pevný odkaz]] na kompatibilní shell, i když mnoho uživatelů používá jiné shelly.
== Původ ==
Bourne shell nahradil původní [[Thompson shell]] se stejným jménem <code>/bin/sh</code> v systému [[Version 7 Unix]] v roce 1977. Protože většina současných [[UN*X|unixových]] systémů vychází právě z Unixu ''Version 7'', je původní Thompsonův shell považován za zastaralý a již se nepoužívá. Standardním shellem, na který se tak mohou programátoři spolehnout, je právě ''Bourne shell''.


Bourne shell vyvinul [[Stephen R. Bourne|Stephen Bourne]] v [[Bellovy laboratoře|Bellových laboratořích]] jako náhradu za [[Thompson shell]], který byl v systému přítomen jako program se stejným jménem <code>sh</code>. Bourne shell byl vydán v roce 1979 v Unixu verze 7 distribuované na vysoké školy a univerzity. I když se používá jako interaktivní interpret příkazů, byl také zamýšlen jako [[skriptovací jazyk]] a obsahuje většinu funkcí, které jsou obvykle považovány za základ pro tvorbu strukturovaných programů.
V současné době je <code>/bin/sh</code> často pouze [[symbolický odkaz]] na [[bash]] (Bourne Again Shell), který se při volání tímto jménem chová jako původní ''Bourne shell''.


K oblibě Bourne shellu příspěla kniha ''[[The Unix Programming Environment]]'' [[Brian Kernighan|Briana Kernighana]] a [[Rob Pike|Roba Pikea]], která byla první komerčně vydanou knihou, která výukovou formou představila shell jako programovací jazyk.
=== Primární cíle ===
* umožnit aby shell skripty mohly být používány jako filtry
* poskytovat programovatelnost včetně [[Řídicí struktura|řídicích struktur]] a [[proměnná|proměnných]]
* ovládání všech vstupů/výstupů jako popisovače souborů
* kontrola signálů zjištěných uvnitř [[skript (program)|skriptů]]
* žádné limity na délky [[řetězec|řetězců]] při interpretování shell skriptů
* zjednodušení a zevšeobecnění mechanismu citací řetězců


== Historie ==
Tyto mechanismy byly přidány do ''Verze 7''. Tyto souvislosti byly ustanoveny na začátku a poskytují cestu shell skriptům k tomu, aby byly podskriptům v kontextu bez toho, aniž by musely užívat explicitní situační parametry.
[[Soubor:Version 7 UNIX SIMH PDP11 Bourne Shell Manual.png|náhled|[[Version 7 Unix]]: původní [[manuálová stránka]] Bourne shellu. Simulace [[PDP-11]] na [[SIMH]].]]


== Významné rysy ==
=== Původ ===
Ačkoliv je užívaný jako interaktivní příkazový interpret, byl vždy zamýšlen jako [[skriptovací jazyk]]. Oblibu získal s vydáním knihy ''Unix'' od [[Brian Kernighan|Briana W. Kernighana]] a [[Rob Pike|Roba Pikeho]] ''programovací prostředí'', což byla první komerčně vydaná kniha, která představovala shell jako programovací jazyk ve formě výuky.


Práce na Bourne shellu začaly v roce 1976.<ref>https://www.bsdcan.org/2015/schedule/events/612.en.html Stephen Bourne Keynote for BSDCan 2015</ref> Poprvé se objevil ve [[Version 7 Unix]],<ref name="reader" /> předchůdcem Bourne shellu byl [[PWB shell|Mashey shell]].
Bourne shell byl též první, který představoval konvenci použití ''file descriptor 2'' pro ''standardní chybový výstup'', dovolující mnohem větší programovou kontrolu běhu skriptu a oddělení chybových zprávy od výstupních dat.


Mezi hlavní cíle shellu patřilo:<ref>{{Citace elektronické monografie
== Inovace ==
| url = http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh
* ''command substitution'' používání zpětných uvozovek: `command`.
| titul = The A-Z of Programming Languages: Bourne shell, or sh
* používání << k vsazení bloku vstupního textu uvnitř skriptu.
| vydavatel = computerworld.com.au
* ''"for ~ do ~ done'' smyčka zvláště použití $* smyčky přes argument.
| datum přístupu = 2009-03-06
* ''case ~ in ~ esac'' mechanismus výběru zejména k tomu, aby pomáhal syntaktické analýze.
| url archivu = https://web.archive.org/web/20100111203059/http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh
* ''sh'' poskytl podporu pro prostředí proměnných používajících parametrů klíčového slova a exportované do proměnné.
| datum archivace = 2010-01-11
| nedostupné = ano
| ref = harv
}}</ref>
* umožnit použití [[Shellový skript|shellových skriptů]] jako [[Filtr (informatika)|filtrů]]
* umožnit jeho použití jako programovacího jazyka včetně [[Řídicí struktura|řídicích struktur]] a [[Proměnná (programování)|proměnných]]
* kontrola nad všemi vstupními a výstupními [[Deskriptor souboru|popisovači souborů]]
* kontrola nad [[Signál (informatika)|zpracováváním signálů]] v rámci skriptů
* žádná omezení na délky řetězců při interpretaci shellových skriptů
* racionalizovat a zobecnit mechanismus [[escapování]] řetězců
* [[Proměnná prostředí|mechanismus proměnných prostředí]], který umožní poskytovat běhový kontext ze shellu spouštěným [[Proces (informatika)|procesům]] a shellovým skriptům bez nutnosti použití explicitních [[Parametr funkce|parametrů příkazu]]


=== Vlastnosti původní verze ===
V průběhu let byl Bourne shell rozšířený v AT&T. Různé varianty jsou nazvané jako příslušná AT&T Unixová verze, která byla uvolněna (důležitými variantami jsou ''Verze7'', [[UNIX System III|System III]], [[SVR2]], [[SVR3]], [[SVR4]]). Protože shell nebyl nikdy verzí a jediný způsob jeho identifikování je otestovat jeho rysy.
K vlastnostem UNIX Bourne shellu verze 7 patří:


* skripty lze spouštět zadáním jména souboru, v němž je skript uložen, jako příkazu
== Následníci ==
* může být používán interaktivně nebo neinteraktivně
Jako většina z následníků bylo řízení úloh zahrnuto do pozdějších verzí Bourne shellu.
* umožňuje synchronní i asynchronní provádění příkazů
* podporuje přesměrování vstupu a výstupu a řetězení příkazů pomocí [[Roura (Unix)|rour]]
* poskytuje sadu vestavěných příkazů
* poskytuje řídicí konstrukce a nástroje pro [[escapování]] řetězců.
* beztypové proměnné
* proměnné s lokální a globální [[oblast platnosti|oblastí platnosti]]
* skripty není nutné před provedením kompilovat
* nemá příkaz [[GOTO|goto]]
* pomocí [[apostrof|obráceného apostrofu]] lze provádět vkládání výstupu příkazů do příkazového řádku: <code>tar cvf archiv.tar `ls *.txt | grep -v '.-old'`</code>.
* možnost předložení víceřádkového textu jako [[Standardní proudy|standardního vstupu]] příkazu pomocí <code>&lt;&lt;</code> – tzv. [[here dokument]]y
* smyčka <code>for ~ do ~ done</code> s použitím výrazu <code>$*</code> jako seznamu argumentů, a smyčka <code>for ~ in ~ do ~ done</code> pro iterování přes seznam
* konstrukce <code>case ~ in ~ esac</code> pro vícecestné větvení, primárně určená pro analýzu parametrů předávaných skriptům
* předávání pojmenovaných parametrů spouštěným příkazům pomocí mechanismu [[Proměnné prostředí|proměnných prostředí]]
* silné nástroje pro kontrolu vstupu a výstupu, včetně [[Regulární výraz|regulárních výrazů]]


Bourne shell také jako první zavedl možnost použití [[Deskriptor souboru|deskriptoru souboru]] <code>2&gt;</code> pro zpřístupnění [[Chybové hlášení|standardního chybového výstupu]], umožňující mnohem větší kontrolu nad zpracováním výstupu díky oddělení chybových hlášení od výstupních dat.
=== Korn shell (ksh) ===
{{Viz též|Korn shell}}
''Korn shell'' (''ksh''), mnohem později napsaný [[David Korn|Davidem Kornem]], byl střední cestou mezi dvěma shelly se syntaxemi přebraných z Bourne shellu a řízení úloh vytažených z [[C shell]]u. Funkčnost z originálního Korn shellu byla užívána jako základ pro [[POSIX shell]] standard. Od roku [[2000]] byl dán jako otevřený zdroj v novějších verzích a je použitý v některých Linuxových distribucích; tam je také klon známý jako ''pdksh''.


Řídicí konstrukce Bourne shellu byly silně ovlivněny zkušenostmi Stephena Bourneho s jazykem [[ALGOL 68C]],<ref name="reader">{{Citace monografie
=== Rc ===
| jméno = M. D.
[[rc shell|rc]] vytvořil [[Tom Duff]] v [[Bellovy laboratoře|Bellových laboratořích]] jako náhradu sh pro ''Unix Verze 10''. Je standardním shellem v [[Plan 9 from Bell Labs]] a [[Inferno (operační systém)|Inferno]]. Unixová verze je součástí [[Plan 9 from User Space|plan9port]].
| příjmení = McIlroy
| rok = 1987
| url = http://www.cs.dartmouth.edu/~doug/reader.pdf
| url archivu = https://web.archive.org/web/20140504225225/http://www.cs.dartmouth.edu/~doug/reader.pdf
| datum archivace = 2014-05-04
| nedostupné = live
| titul = A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986
| edice = CSTR
| číslo = 139
| vydavatel = Bell Labs
}}</ref> jehož překladač vyvíjel na [[Univerzita v Cambridgi|Universitě v Cambridgi]]. Kromě stylu, jakým byl program napsán, Bourne použil konstrukce z jazyka [[ALGOL 68]]: <code>'''if''' ~ '''then''' ~ '''elif''' ~ '''then''' ~ '''else''' ~ '''fi'''</code>, <code>'''case''' ~ '''in''' ~ '''esac'''</code> a <code>'''for'''/'''while''' ~ '''do''' ~ '''done'''</code>“ (s použitím <code>'''done'''</code> místo <code>'''od'''</code>). Navíc – přestože v7 shell byl napsán v [[C (programovací jazyk)|jazyce C]] – Bourne využil některá [[Makro (software)|makra]],<ref>{{Citace elektronické monografie
| url = http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
| titul = mac.h – Macros used by Bourne to structure C like Algol68C
| datum přístupu = 2006-09-09
| autor = Bourne, Steve
| odkaz na autora = Stephen R. Bourne
| datum = 1979-01-12
| vydavatel = AT&T Corporation
| ref = harv
}}</ref> aby [[zdrojový kód]] připomínal ALGOL 68. Tato makra (spolu s příkazem [[finger (protokol)|finger]] distribuovaným s Unixem verze [[BSD|4.2BSD]]) inspirovaly [[International Obfuscated C Code Contest]] (IOCCC).<ref>{{Citace elektronické monografie
| url = http://www.ioccc.org/faq.html
| titul = The IOCCC FAQ – Q/A: How did the IOCCC get started?
| datum přístupu = 2006-09-09
| autor = Landon Curt Noll
| autor2 = Simon Cooper
| autor3 = Peter Seebach
| autor4 = Leonid A. Broukhis
| name-list-style = amp
| rok = 2004
| vydavatel = ioccc.org
| ref = harv
}}</ref>


=== Bourne Again Shell (bash) ===
=== Vlastnosti doplněné po roce 1979 ===
Bourne shell byl v AT&T postupně zdokonalován. Jeho různé varianty jsou proto nazývány podle verze AT&T Unixu, se kterou byl dodáván (k významným verzím patří Version7, System III, SVR2, SVR3, SVR4). Protože shell nikdy neměl číslování verzí, jediný způsob, jak identifikovat jeho verzi, je testování jeho vlastností.<ref>{{Citace elektronické monografie
[[Bash]] (Bourne Again shell) byl později vyvinut pro [[GNU]] projekt a přebral rysy ze shellů Bourne shell, [[C shell]] a [[Korn shell]].
| url = http://www.in-ulm.de/~mascheck/various/whatshell/
| titul = what shell is this
| vydavatel = www.in-ulm.de
| ref = harv
}}</ref>


Od roku 1979 má Bourne shell následující vlastnosti:<ref>{{Citace elektronické monografie
Vlivem autorského práva vypadá prostředí Bourne shell stejně, jako to bylo použito v [[BSD]] vydáních. [[Kenneth Almquist]] vyvinul klon Bourne shell, známý jako [[Almquist shell]] a dostupný pod ''BSD licencí'', který se dnes užívá na některých BSD následnících. Almquist shell portovaný na [[Linux]] byl přejmenován na [[Debian Almquist shell]] nebo ''dash''. Tento shell poskytuje mnohem větší výkon než standardní ''sh'' skripty při menší paměťové zátěži než jeho běžnější protějšek bash. Bohužel jeho použití často odhalí ''bashismy'' — bash-centrické konstrukce, které v Bourne shellu nejsou dostupné a působí problémy, pokud autor skriptu nespecifikoval požadavek na jeho spuštění v ''bash''i.
| url = http://www.in-ulm.de/~mascheck/bourne/
| titul = traditional Bourne shell family / history and development
| vydavatel = www.in-ulm.de
| ref = harv
}}</ref>

* vestavěný příkaz {{code|test}} – System III shell (1981)
* komentáře uvozené znakem <code>#</code> – System III shell (1981)
* dvojtečka v substituci parametru „${parametr:=slovo}“ – System III shell (1981)
* argument příkazu {{code|continue}} – System III shell (1981)
* {{code|cat <<-EOF}} pro odsazené [[here dokument]]y – System III shell (1981)
* definice funkcí a vestavěný příkaz {{code|return}} – SVR2 shell (1984)
* vestavěné příkazy {{code|unset}}, {{code|echo}}, {{code|typ práce}} – SVR2 shell (1984)
* odstranění makeri, díky kterým se [[zdrojový kód]] podobá jazyku ALGOL68 – SVR2 shell (1984)
* moderní „{{code|$@}}“ – SVR3 shell (1986)
* vestavěný příkaz {{code|getopts}} – SVR3 shell (1986)
* revidované zpracovávání parametrů umožňuje rekurzivní volání funkcí – SVR3 shell (1986)
* transparentní zpracování 8bitových znaků – SVR3 shell (1986)
* řízení úloh – SVR4 shell (1989)
* podpora vícebytových znaků – SVR4 shell (1989)

== Varianty ==

=== DMERT shell ===
Duplex Multi-Environment Real-Time ([[DMERT]]), hybridní operační systém se sdílením času a pro práci v reálném čase vyvinutý v 70. letech 20. století v oddělení Indian Hill Bellových Laboratoří umístěném v Naperville ve státě [[Illinois]], používá verzi „VERSION sys137 DATE 1978 Oct 12 22:39:57“ Bourne Shellu z roku 1978.{{Doplňte zdroj|datum=leden 2017}} DMERT shell běží na počítačích [[3B21D]], které se stále používají v telekomunikacích.{{Doplňte zdroj|datum=leden 2017}}

=== Korn shell ===
[[Soubor:OpenBSD ksh Interaction.png|náhled|Práce s implicitním shellem ''[[Korn shell|pdksh]]'' v [[OpenBSD]]]]

[[Korn shell|Korn shell]] (ksh) napsal [[David Korn]] vychází z původního [[Zdrojový kód|zdrojového kódu]] Bourne Shellu,<ref>
{{Citace periodika
| titul = ksh - An Extensible High Level Language
| příjmení = Korn
| jméno = David G.
| vydavatel = USENIX Association
| periodikum = Proceedings of the USENIX 1994 Very High Level Languages Symposium
| datum = 1994-10-26
| url = https://www.usenix.org/legacy/publications/library/proceedings/vhll/full_papers/korn.ksh.a
| poznámky = Místo čímž vynalezl nový skript jazyk, we vestavěný forma položka systém by modifikování Bourne shell, sečtení vestavěný příkazy jako nezbytný.
| datum přístupu = 2015-02-05
| ref = harv
}}</ref> byl střední cestou mezi Bourne shellem a [[C shell]]em. Jeho syntax vycházela z Bourne shellu, ale [[řízení úloh (Unix)|řízení úloh]] připomínalo C-shell. Funkčnost původního Korn Shell (známého jako ksh88 podle rok svého zveřejnění) byla vzata jako základ pro definici shellu v normě [[POSIX]]. Jeho novější verze, ksh93, má od roku 2000 [[Svobodný software|otevřený zdrojový text]] a používá se na některých [[Linuxová distribuce|Linuxových distribucích]]. Klon ksh88 známý jako [[Korn shell|pdksh]] je implicitním shellem v OpenBSD.

=== Schily Bourne Shell ===
Schily-Tools [[Jörg Schilling|Jörga Schillinga]] obsahují tři shelly odvozené z Bourne Shellu.<ref>{{Citace elektronické monografie
| titul = Schily Bourne Shell - A modern enhanced and POSIX compliant Bourne Shell source maintained by Jörg Schilling.
| url = http://schilytools.sourceforge.net/bosh.html
| vydavatel = Schily-Tools
| ref = harv
}}</ref>

== Vztah k jiný shellům ==

=== C-shell ===
[[Bill Joy]], autor [[C shell]]u, kritizoval Bourne shell jako nepřívětivý pro interaktivní použití,<ref>[http://www.kitebird.com/csh-tcsh-book/csh-intro.pdf ''An Introduction to the C shell''] {{Webarchive|url=https://web.archive.org/web/20180713012111/http://www.kitebird.com/csh-tcsh-book/csh-intro.pdf |datum=2018-07-13 }} by [[Bill Joy]].{{Page needed|datum=July 2017}}</ref> což je úkol, v němž sám Stephen Bourne uznal převahu C-shellu. Bourne však prohlásil, že jeho shell je vhodnější pro skriptování a je dostupný na každém Unixovém systému.<ref name="bourne198310">{{Citace periodika
| url = https://archive.org/stream/byte-magazine-1983-10/1983_10_BYTE_08-10_UNIX#page/n187/mode/2up
| titul = The Unix Shell
| sborník = BYTE
| datum = October 1983
| datum přístupu = 2015-01-30
| autor = Bourne, Stephen R.
| strany = 187
| ref = harv
}}</ref> Ve známém článku „Csh Programming Considered Harmful“ kritizoval C-shell také [[Tom Christiansen]] jako nástroj nevhodný pro skriptování a programování.<ref>{{Citace elektronické monografie
| url = http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
| titul = Csh Programming Considered Harmful
| autor = Tom Christiansen
| datum = 1995-09-28
| datum přístupu = 2014-02-17
| ref = harv
}}</ref>

=== Almquistovy shelly ===
Kvůli problémům s autorskými právy Bourne Shellu používaného v historických verzích CSRG BSD vyvinul Kenneth Almquist klon Bourne Shellu známý jako [[Almquist shell]]. Almquist shell je dostupný pod [[BSD licence|licencí BSD]], a dodnes se používá v některých systémech odvozených z BSD a v systémech s malou pamětí. Almquistův shell byl pod názvem Debian Almquist shell neboli dash přenesen na Linux. Tento shell poskytuje rychlejší spouštění standardních shellových skriptů (a v moderních verzích skriptů pro shell podle standardu [[POSIX]]) a při běhu zabírá méně paměti než bash. Při jeho použití často dochází k odhalování konstrukcí, které podporuje pouze [[bash]], tzv. bashismy.

=== Jiné shelly ===
* [[Bash|Bash]] ( ''Bourne-Again shell'') vyvinutý v roce 1989 pro [[GNU|projekt GNU]] zahrnuje vlastnosti z Bourne shellu, csh, a ksh. Je navržen, aby byl kompatibilní s normou POSIX.
* Shell [[rc]] vytvořil v [[Bellovy laboratoře|Bellových laboratořích]] [[Tom Duff]] jako náhradu za sh pro [[Research Unix|Unix Verze 10]]. Je implicitním shellem pro [[Plan 9 from Bell Labs]]. Byl portován na UNIX jako část [[Plan 9 from User Space]].
* [[Z shell]] vytvořil Paul Falstad v roce 1990; jde o rozšíření Bourne shellu s velkým počtem vylepšení, včetně některých vlastností z [[bash]]e, [[Korn shell|ksh]] a [[tcsh]].


== Použití ==
== Použití ==
Bourne shell je v současné době standardem ve všech značkových [[UN*X|unixových]] systémech, ačkoliv BSD systémy měly historicky mnoho skriptů napsaných v csh. Bourne shell skripty mohou být v Linuxu a dalších unixových systémech spuštěny pomocí shellů [[bash]] nebo dash.
Bourne shell býval kdysi standardem na všech značkových [[Unix|unixových systémech]], i když v minulosti obsahovaly systémy založené na [[BSD]] mnoho skriptů napsaných v [[C shell|csh]]. Na [[Linux]]u nebo jiných [[UN*X|unixových]] systémech lze skripty pro Bourne shell obvykle provádět [[bash]]em nebo [[Almquist shell|dashem]], jejichž příkazy mají syntaxi vycházející ze shellu definovaného normou [[POSIX]].


== Odkazy ==
== Odkazy ==

=== Reference ===
=== Reference ===
{{překlad|en|Bourne shell|139071361}}
{{Překlad|en|Bourne shell|1191669507}}<references />

=== Související články ===
* [[Porovnání příkazových shellů]]
* [[Unixový shell]]


=== Externí odkazy ===
=== Externí odkazy ===
* {{Wikiknihy|kniha=Skriptování v Bournově shellu}}
* {{Wikiknihy|kniha=Skriptování v Bournově shellu}}
* [http://www.in-ulm.de/~mascheck/bourne/ The individual members of "The Traditional Bourne Shell Family"]
* [http://www.in-ulm.de/~mascheck/bourne/common.html "Characteristical common properties of the traditional Bourne shells"]
* [http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh Historical C source code for the Bourne shell using mac.h macros from 1979]
* [http://steve-parker.org/sh/bourne.shtml Original Bourne Shell documentation from 1978]
* [http://heirloom.sourceforge.net/sh.html A port of the "heirloom" SVR4 Bourne shell from OpenSolaris to some other Unix-like systems]
* [https://web.archive.org/web/20191030202653/http://www.unix.org/whitepapers/shdiffs.html Migrating from the System V (SVR4) Shell to the POSIX Shell]
* [http://www.grymoire.com/Unix/Sh.html Bourne Shell Tutorial (syntax)]
* [http://www.faqs.org/faqs/unix-faq/shell/shell-differences/ Faqs shell differences]
* [http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh?fp=&fpid=&pf=1 Howard Dahdah, The A–Z of Programming Languages: Bourne shell, or sh – An in-depth interview with Steve Bourne, creator of the Bourne shell, or sh], ''[[Computerworld]]'', 5 Březen 2009.

{{DEFAULTSORT:Bourne Shell}}
[[Kategorie:Příkazové interprety]]
[[Kategorie:Příkazové interprety]]
[[Kategorie:Skriptovací jazyky]]
[[Kategorie:Software pro Unix]]
[[Kategorie:Software pro Unix]]
[[Kategorie:POSIX]]

[[de:Unix-Shell#Die Bourne-Shell]]

Verze z 1. 5. 2024, 12:10

Bourne shell
Použití Bourne shellu na Version 7 Unix
VývojářBellovy laboratoře
První vydání1979; před 16608 dny
Operační systémUnix
Typ softwaruUnixový shell
Některá data mohou pocházet z datové položky.

Bourne shell je interpret příkazů (shell) pro operační systémy vycházející ze systému Unix. Byl implicitním shellem ve Version 7 Unix a ve většině unixových systémů je /bin/sh stále Bourne shell nebo symbolický či pevný odkaz na kompatibilní shell, i když mnoho uživatelů používá jiné shelly.

Bourne shell vyvinul Stephen Bourne v Bellových laboratořích jako náhradu za Thompson shell, který byl v systému přítomen jako program se stejným jménem sh. Bourne shell byl vydán v roce 1979 v Unixu verze 7 distribuované na vysoké školy a univerzity. I když se používá jako interaktivní interpret příkazů, byl také zamýšlen jako skriptovací jazyk a obsahuje většinu funkcí, které jsou obvykle považovány za základ pro tvorbu strukturovaných programů.

K oblibě Bourne shellu příspěla kniha The Unix Programming Environment Briana Kernighana a Roba Pikea, která byla první komerčně vydanou knihou, která výukovou formou představila shell jako programovací jazyk.

Historie

Version 7 Unix: původní manuálová stránka Bourne shellu. Simulace PDP-11 na SIMH.

Původ

Práce na Bourne shellu začaly v roce 1976.[1] Poprvé se objevil ve Version 7 Unix,[2] předchůdcem Bourne shellu byl Mashey shell.

Mezi hlavní cíle shellu patřilo:[3]

Vlastnosti původní verze

K vlastnostem UNIX Bourne shellu verze 7 patří:

  • skripty lze spouštět zadáním jména souboru, v němž je skript uložen, jako příkazu
  • může být používán interaktivně nebo neinteraktivně
  • umožňuje synchronní i asynchronní provádění příkazů
  • podporuje přesměrování vstupu a výstupu a řetězení příkazů pomocí rour
  • poskytuje sadu vestavěných příkazů
  • poskytuje řídicí konstrukce a nástroje pro escapování řetězců.
  • beztypové proměnné
  • proměnné s lokální a globální oblastí platnosti
  • skripty není nutné před provedením kompilovat
  • nemá příkaz goto
  • pomocí obráceného apostrofu lze provádět vkládání výstupu příkazů do příkazového řádku: tar cvf archiv.tar `ls *.txt | grep -v '.-old'`.
  • možnost předložení víceřádkového textu jako standardního vstupu příkazu pomocí << – tzv. here dokumenty
  • smyčka for ~ do ~ done s použitím výrazu $* jako seznamu argumentů, a smyčka for ~ in ~ do ~ done pro iterování přes seznam
  • konstrukce case ~ in ~ esac pro vícecestné větvení, primárně určená pro analýzu parametrů předávaných skriptům
  • předávání pojmenovaných parametrů spouštěným příkazům pomocí mechanismu proměnných prostředí
  • silné nástroje pro kontrolu vstupu a výstupu, včetně regulárních výrazů

Bourne shell také jako první zavedl možnost použití deskriptoru souboru 2> pro zpřístupnění standardního chybového výstupu, umožňující mnohem větší kontrolu nad zpracováním výstupu díky oddělení chybových hlášení od výstupních dat.

Řídicí konstrukce Bourne shellu byly silně ovlivněny zkušenostmi Stephena Bourneho s jazykem ALGOL 68C,[2] jehož překladač vyvíjel na Universitě v Cambridgi. Kromě stylu, jakým byl program napsán, Bourne použil konstrukce z jazyka ALGOL 68: if ~ then ~ elif ~ then ~ else ~ fi, case ~ in ~ esac a for/while ~ do ~ done“ (s použitím done místo od). Navíc – přestože v7 shell byl napsán v jazyce C – Bourne využil některá makra,[4] aby zdrojový kód připomínal ALGOL 68. Tato makra (spolu s příkazem finger distribuovaným s Unixem verze 4.2BSD) inspirovaly International Obfuscated C Code Contest (IOCCC).[5]

Vlastnosti doplněné po roce 1979

Bourne shell byl v AT&T postupně zdokonalován. Jeho různé varianty jsou proto nazývány podle verze AT&T Unixu, se kterou byl dodáván (k významným verzím patří Version7, System III, SVR2, SVR3, SVR4). Protože shell nikdy neměl číslování verzí, jediný způsob, jak identifikovat jeho verzi, je testování jeho vlastností.[6]

Od roku 1979 má Bourne shell následující vlastnosti:[7]

  • vestavěný příkaz test – System III shell (1981)
  • komentáře uvozené znakem # – System III shell (1981)
  • dvojtečka v substituci parametru „${parametr:=slovo}“ – System III shell (1981)
  • argument příkazu continue – System III shell (1981)
  • cat <<-EOF pro odsazené here dokumenty – System III shell (1981)
  • definice funkcí a vestavěný příkaz return – SVR2 shell (1984)
  • vestavěné příkazy unset, echo, typ práce – SVR2 shell (1984)
  • odstranění makeri, díky kterým se zdrojový kód podobá jazyku ALGOL68 – SVR2 shell (1984)
  • moderní „$@“ – SVR3 shell (1986)
  • vestavěný příkaz getopts – SVR3 shell (1986)
  • revidované zpracovávání parametrů umožňuje rekurzivní volání funkcí – SVR3 shell (1986)
  • transparentní zpracování 8bitových znaků – SVR3 shell (1986)
  • řízení úloh – SVR4 shell (1989)
  • podpora vícebytových znaků – SVR4 shell (1989)

Varianty

DMERT shell

Duplex Multi-Environment Real-Time (DMERT), hybridní operační systém se sdílením času a pro práci v reálném čase vyvinutý v 70. letech 20. století v oddělení Indian Hill Bellových Laboratoří umístěném v Naperville ve státě Illinois, používá verzi „VERSION sys137 DATE 1978 Oct 12 22:39:57“ Bourne Shellu z roku 1978.[zdroj?] DMERT shell běží na počítačích 3B21D, které se stále používají v telekomunikacích.[zdroj?]

Korn shell

Práce s implicitním shellem pdksh v OpenBSD

Korn shell (ksh) napsal David Korn vychází z původního zdrojového kódu Bourne Shellu,[8] byl střední cestou mezi Bourne shellem a C shellem. Jeho syntax vycházela z Bourne shellu, ale řízení úloh připomínalo C-shell. Funkčnost původního Korn Shell (známého jako ksh88 podle rok svého zveřejnění) byla vzata jako základ pro definici shellu v normě POSIX. Jeho novější verze, ksh93, má od roku 2000 otevřený zdrojový text a používá se na některých Linuxových distribucích. Klon ksh88 známý jako pdksh je implicitním shellem v OpenBSD.

Schily Bourne Shell

Schily-Tools Jörga Schillinga obsahují tři shelly odvozené z Bourne Shellu.[9]

Vztah k jiný shellům

C-shell

Bill Joy, autor C shellu, kritizoval Bourne shell jako nepřívětivý pro interaktivní použití,[10] což je úkol, v němž sám Stephen Bourne uznal převahu C-shellu. Bourne však prohlásil, že jeho shell je vhodnější pro skriptování a je dostupný na každém Unixovém systému.[11] Ve známém článku „Csh Programming Considered Harmful“ kritizoval C-shell také Tom Christiansen jako nástroj nevhodný pro skriptování a programování.[12]

Almquistovy shelly

Kvůli problémům s autorskými právy Bourne Shellu používaného v historických verzích CSRG BSD vyvinul Kenneth Almquist klon Bourne Shellu známý jako Almquist shell. Almquist shell je dostupný pod licencí BSD, a dodnes se používá v některých systémech odvozených z BSD a v systémech s malou pamětí. Almquistův shell byl pod názvem Debian Almquist shell neboli dash přenesen na Linux. Tento shell poskytuje rychlejší spouštění standardních shellových skriptů (a v moderních verzích skriptů pro shell podle standardu POSIX) a při běhu zabírá méně paměti než bash. Při jeho použití často dochází k odhalování konstrukcí, které podporuje pouze bash, tzv. bashismy.

Jiné shelly

Použití

Bourne shell býval kdysi standardem na všech značkových unixových systémech, i když v minulosti obsahovaly systémy založené na BSD mnoho skriptů napsaných v csh. Na Linuxu nebo jiných unixových systémech lze skripty pro Bourne shell obvykle provádět bashem nebo dashem, jejichž příkazy mají syntaxi vycházející ze shellu definovaného normou POSIX.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Bourne shell na anglické Wikipedii.

  1. https://www.bsdcan.org/2015/schedule/events/612.en.html Stephen Bourne Keynote for BSDCan 2015
  2. a b MCILROY, M. D. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986. [s.l.]: Bell Labs, 1987. (CSTR). Dostupné v archivu pořízeném z originálu dne 2014-05-04. 
  3. The A-Z of Programming Languages: Bourne shell, or sh [online]. computerworld.com.au [cit. 2009-03-06]. Dostupné v archivu pořízeném dne 2010-01-11. 
  4. Bourne, Steve. mac.h – Macros used by Bourne to structure C like Algol68C [online]. AT&T Corporation, 1979-01-12 [cit. 2006-09-09]. Dostupné online. 
  5. Landon Curt Noll; Simon Cooper; Peter Seebach; Leonid A. Broukhis, 2004. The IOCCC FAQ – Q/A: How did the IOCCC get started? [online]. ioccc.org, 2004 [cit. 2006-09-09]. Dostupné online. 
  6. what shell is this [online]. www.in-ulm.de. Dostupné online. 
  7. traditional Bourne shell family / history and development [online]. www.in-ulm.de. Dostupné online. 
  8. KORN, David G. ksh - An Extensible High Level Language. Proceedings of the USENIX 1994 Very High Level Languages Symposium. USENIX Association, 1994-10-26. Místo čímž vynalezl nový skript jazyk, we vestavěný forma položka systém by modifikování Bourne shell, sečtení vestavěný příkazy jako nezbytný.. Dostupné online [cit. 2015-02-05]. 
  9. Schily Bourne Shell - A modern enhanced and POSIX compliant Bourne Shell source maintained by Jörg Schilling. [online]. Schily-Tools. Dostupné online. 
  10. An Introduction to the C shell Archivní kopie na Internet Archive. by Bill Joy.Šablona:Page needed
  11. Bourne, Stephen R. The Unix Shell. archive.org. October 1983, s. 187. Dostupné online [cit. 2015-01-30]. 
  12. Tom Christiansen. Csh Programming Considered Harmful [online]. 1995-09-28 [cit. 2014-02-17]. Dostupné online. 

Související články

Externí odkazy


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/w/index.php
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.