Přeskočit na obsah

Bourne shell

Z Wikipedie, otevřené encyklopedie
Bourne shell
Použití Bourne shellu na Version 7 Unix
Použití Bourne shellu na Version 7 Unix
VývojářBellovy laboratoře
První vydání1979; před 16730 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.

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

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

[editovat | editovat zdroj]

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

[editovat | editovat zdroj]

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)

DMERT shell

[editovat | editovat zdroj]

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

[editovat | editovat zdroj]
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

[editovat | editovat zdroj]

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

Vztah k jiným shellům

[editovat | editovat zdroj]

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

[editovat | editovat zdroj]

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

[editovat | editovat zdroj]

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.

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 [cit. 2024-05-01]. Dostupné v archivu pořízeném dne 2019-09-27. 
  10. An Introduction to the C shell Archivováno 13. 3. 2022 na Wayback Machine. 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

[editovat | editovat zdroj]

Externí odkazy

[editovat | editovat zdroj]
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy