programovací jazyk From Wikipedia, the free encyclopedia
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.
Použití Bourne shellu na Version 7 Unix | |
Vývojář | Bellovy laboratoře |
---|---|
První vydání | 1979 |
Operační systém | Unix |
Typ softwaru | Unixový shell |
Některá data mohou pocházet z datové položky. |
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.
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]
K vlastnostem UNIX Bourne shellu verze 7 patří:
tar cvf archiv.tar `ls *.txt | grep -v '.-old'`
.<<
– tzv. here dokumentyfor ~ do ~ done
s použitím výrazu $*
jako seznamu argumentů, a smyčka for ~ in ~ do ~ done
pro iterování přes seznamcase ~ in ~ esac
pro vícecestné větvení, primárně určená pro analýzu parametrů předávaných skriptůmBourne 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]
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]
test
– System III shell (1981)#
– System III shell (1981)continue
– System III shell (1981)cat <<-EOF
pro odsazené here dokumenty – System III shell (1981)return
– SVR2 shell (1984)unset
, echo
, typ práce
– SVR2 shell (1984)$@
“ – SVR3 shell (1986)getopts
– SVR3 shell (1986)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 (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-Tools Jörga Schillinga obsahují tři shelly odvozené z Bourne Shellu.[9]
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]
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.
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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.