Bourne shell

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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. +more 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. Poprvé se objevil ve Version 7 Unix, předchůdcem Bourne shellu byl Mashey shell.

Mezi hlavní cíle shellu patřilo: * umožnit použití shellových skriptů jako filtrů * umožnit jeho použití jako programovacího jazyka včetně řídicích struktur a proměnných * kontrola nad všemi vstupními a výstupními popisovači souborů * kontrola nad 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ů * mechanismus proměnných prostředí, který umožní poskytovat běhový kontext ze shellu spouštěným procesům a shellovým skriptům bez nutnosti použití explicitních parametrů příkazu

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. +moretar `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, 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). +more Navíc - přestože v7 shell byl napsán v jazyce C - Bourne využil některá makra, 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).

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). +more Protože shell nikdy neměl číslování verzí, jediný způsob, jak identifikovat jeho verzi, je testování jeho vlastností.

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

* vestavěný příkaz - 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 - System III shell (1981) * pro odsazené here dokumenty - System III shell (1981) * definice funkcí a vestavěný příkaz - SVR2 shell (1984) * vestavěné příkazy, - 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 - 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. +more 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. DMERT shell běží na počítačích 3B21D, které se stále používají v telekomunikacích.

Korn shell

pdksh v OpenBSD

Korn shell (ksh) napsal David Korn vychází z původního zdrojového kódu Bourne Shellu, 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. +more 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.

Vztah k jiný shellům

C-shell

Bill Joy, autor C shellu, kritizoval Bourne shell jako nepřívětivý pro interaktivní použití, 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. +more 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í.

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í. +more 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 ( Bourne-Again shell) vyvinutý v roce 1989 pro projekt GNU zahrnuje vlastnosti z Bourne shellu, csh, a ksh. Je navržen, aby byl kompatibilní s normou POSIX. +more * Shell rc vytvořil v Bellových laboratořích Tom Duff jako náhradu za sh pro 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 bashe, ksh a tcsh.

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

Související články

Porovnání příkazových shellů * Unixový shell

Externí odkazy

[url=http://www. in-ulm. +morede/~mascheck/bourne/]The individual members of "The Traditional Bourne Shell Family"[/url] * [url=http://www. in-ulm. de/~mascheck/bourne/common. html]"Characteristical common properties of the traditional Bourne shells"[/url] * [url=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[/url] * [url=http://steve-parker. org/sh/bourne. shtml]Original Bourne Shell documentation from 1978[/url] * [url=http://heirloom. sourceforge. net/sh. html]A port of the "heirloom" SVR4 Bourne shell from OpenSolaris to some other Unix-like systems[/url] * [url=https://web. archive. org/web/20191030202653/http://www. unix. org/whitepapers/shdiffs. html]Migrating from the System V (SVR4) Shell to the POSIX Shell[/url] * [url=http://www. grymoire. com/Unix/Sh. html]Bourne Shell Tutorial (syntax)[/url] * [url=http://www. faqs. org/faqs/unix-faq/shell/shell-differences/]Faqs shell differences[/url] * [url=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[/url], Computerworld, 5 Březen 2009.

Kategorie:Příkazové interprety Kategorie:Skriptovací jazyky Kategorie:Software pro Unix Kategorie:POSIX

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top