Bourneova skořápka - Bourne shell

Bourneova skořápka
Verze 7 UNIX SIMH PDP11 Kernels Shell.png
Interakce Bourneova prostředí na verzi 7 Unix
Původní autoři Stephen Bourne
Vývojáři Bell telefonní laboratoře
První vydání 1979 ; Před 42 lety ( 1979 )
Operační systém Unix
Typ Unixový shell
Licence [ diskutováno ]

Bourne Shell ( sh) je plášť příkazového řádku interpret pro počítačové operační systémy .

Shell Bourne byl výchozí shell pro Unix verze 7 . Systémy podobné Unixu nadále mají- /bin/shcož bude Bourne shell nebo symbolický odkaz nebo pevný odkaz na kompatibilní shell-i když většina uživatelů používá jiné shelly.

Vyvinutý Stephenem Bournem v Bell Labs , byla náhradou za shell Thompson , jehož spustitelný soubor měl stejný název - sh. Byla vydána v roce 1979 ve verzi Unix verze 7 distribuované na vysoké školy a univerzity. Ačkoli se používá jako interaktivní příkazový tlumočník, byl také zamýšlen jako skriptovací jazyk a obsahuje většinu funkcí, které jsou běžně považovány za produkci strukturovaných programů.

Získal popularitu vydáním Unix Programming Environment od Briana Kernighana a Roba Pikea - první komerčně vydané knihy, která prezentovala shell jako programovací jazyk formou tutoriálu.

Dějiny

Verze 7 Unix : původní manuální stránka Bourne shellu . Simulace PDP-11 se SIMH

Původy

Práce na shellu Bourne byly původně zahájeny v roce 1976. Bourne shell, který se poprvé objevil ve verzi 7 Unix , nahradil shell Mashey .

Některé z hlavních cílů skořepiny byly:

Vlastnosti původní verze

Mezi vlastnosti shellu UNIX Bourne verze 7 patří:

  • Skripty lze vyvolat jako příkazy pomocí jejich názvu souboru
  • Lze použít interaktivně nebo neinteraktivně
  • Umožňuje synchronní i asynchronní provádění příkazů
  • Podporuje přesměrování vstupu a výstupu a potrubí
  • Poskytuje sadu předdefinovaných příkazů
  • Poskytuje konstrukce řízení toku, možnosti nabídek a funkce.
  • Proměnné bez rychlosti
  • Poskytuje místní a globální rozsah proměnných
  • Skripty před spuštěním nevyžadují kompilaci
  • Nemá možnost přejít, takže může být nutná restrukturalizace kódu
  • Příkaz substituce za použití jednoduchých zpětných uvozovek : `command`.
  • Zde jsou dokumenty použity <<k vložení bloku vstupního textu do skriptu.
  • for ~ do ~ donesmyčky, zejména použití $*smyčky přes argumenty, stejně jako for ~ in ~ do ~ donesmyčky pro iteraci přes seznamy.
  • case ~ in ~ esacmechanismus výběru, primárně určený k pomoci při analýze argumentů .
  • sh poskytovala podporu pro proměnné prostředí pomocí parametrů klíčových slov a exportovatelných proměnných.
  • Obsahuje silná ustanovení pro ovládání vstupu a výstupu a v jeho zařízeních pro přizpůsobení výrazů .

Shell Bourne byl také první, kdo zavedl konvenci používání deskriptoru souborů 2> pro chybové zprávy , což umožnilo mnohem větší programové ovládání během skriptování tím, že chybové zprávy byly odděleny od dat.

Styl kódování Stephena Bournea byl ovlivněn jeho zkušenostmi s překladačem ALGOL 68C , na kterém pracoval na univerzitě v Cambridgi . Kromě stylu, ve kterém byl program napsán, Bourne znovu části ALGOLu 68 ‚s , a " (za použití místo ) ustanovení ve společném Unix syntaxe Bourne Shell Kromě toho, -. I když V7 skořepina je napsán v C - Bourne využil některá makra, aby dal zdrojovému kódu C příchuť ALGOL 68. Tato makra (spolu s příkazem finger distribuovaným v unixové verzi 4.2BSD ) inspirovala soutěž International Obfuscated C Code Contest (IOCCC). if ~ then ~ elif ~ then ~ else ~ ficase ~ in ~ esacfor/while ~ do ~ oddoneod

Funkce zavedené po roce 1979

V průběhu let byla u AT&T vylepšena skořepina Bourne. Různé varianty se tedy nazývají jako příslušná verze AT&T Unix, se kterou byla vydána (některé důležité varianty jsou Version7, SystemIII, SVR2, SVR3, SVR4). Protože shell nebyl nikdy verzován, jediným způsobem, jak jej identifikovat, bylo testování jeho funkcí.

Mezi vlastnosti verzí Bourne od roku 1979 patří:

  • Vestavěný testpříkaz-System III shell (1981)
  • # jako komentář - System III shell (1981)
  • Dvojtečka při nahrazování parametrů "$ {parametr: = slovo}" - shell System III (1981)
  • continue s argumentem - Shell System III (1981)
  • cat <<-EOF pro odsazené dokumenty - System III shell (1981)
  • Funkce a returnvestavěný - shell SVR2 (1984)
  • Vestavby unset, echo, type- SVR2 plášť (1984)
  • Zdrojový kód de-ALGOL68-ized-shell SVR2 (1984)
  • Moderní " $@" - plášť SVR3 (1986)
  • Vestavěný- getoptsplášť SVR3 (1986)
  • Vyčištěné zpracování parametrů umožňuje rekurzivně volatelné funkce - shell SVR3 (1986)
  • 8bitové čištění-shell SVR3 (1986)
  • Job control - SVR4 shell (1989)
  • Podpora více bajtů-shell SVR4 (1989)

Varianty

DMERT shell

Duplex Multi-Environment Real-Time ( DMERT ) je hybridní operační systém pro sdílení času/v reálném čase vyvinutý v 70. letech minulého století v lokaci Bell Labs Indian Hill v Naperville v Illinois používá snímek Bourne Shell z roku 1978 „VERSION sys137 DATE 1978 Oct 12 22:39:57 ". Shell DMERT běží na počítačích 3B21D, které se stále používají v telekomunikačním průmyslu.

Korunová skořápka

Interakce s pdksh v OpenBSD (výchozí shell)

Korn shell (ksh) napsané David Korn vychází z původní Bourne Shell zdrojového kódu, byl uprostřed silnice mezi Bourne shell a C shell . Jeho syntaxe byla čerpána hlavně z Bournovy skořápky, zatímco funkce ovládání úlohy se podobaly těm z C skořepiny. Jako základ standardu POSIX shell byla použita funkčnost původního Korn Shell (známý jako ksh88 od roku jeho zavedení) . Novější verze ksh93 je open source od roku 2000 a používá se v některých distribucích Linuxu . Klon ksh88 známý jako pdksh je výchozí shell v OpenBSD.

Schily Bourne Shell

Schily-Tools společnosti Jörg Schilling obsahuje tři deriváty Bourne Shell.

Vztah k jiným skořápkám

C skořápka

Bill Joy , autor C shell , kritizoval Bourne shell jako nevhodný pro interaktivní použití, úkol, pro který sám Stephen Bourne uznal C shell nadřazenost. Bourne však uvedl, že jeho shell byl lepší pro skriptování a byl k dispozici na jakémkoli unixovém systému a Tom Christiansen také kritizoval C shell jako nevhodný pro skriptování a programování.

Almquistické skořápky

Kvůli problémům s autorskými právy kolem Bourne Shell, jak byl používán v historických vydáních CSRG BSD, vyvinul Kenneth Almquist klon Bourne Shell, známý některými jako Almquist shell a dostupný pod licencí BSD , která se dnes používá na některých BSD potomci a v situacích s nízkou pamětí. Almquist Shell byl přenesen do Linuxu a port byl přejmenován na Debian Almquist shell nebo dash. Tento shell poskytuje rychlejší provádění standardních sh(a POSIX-standardů sh, v moderních potomcích) skriptů s menší paměťovou stopou než jeho protějšek, Bash. Jeho použití má tendenci odhalovat bashismy -předpoklady zaměřené na bash vytvořené ve skriptech, které mají běžet na sh.

Jiné skořápky

Používání

Shell Bourne byl kdysi standardem všech značkových unixových systémů, ačkoli historicky systémy založené na BSD měly mnoho skriptů napsaných v csh . Jako základ syntaxe POSIX sh lze skripty Bourne shell obvykle spouštět s Bash nebo dash na Linuxu nebo jiných unixových systémech.

Viz také

Reference

externí odkazy