Bourne shell

typ UNIX shellu a programovací jazyk

Bourne shell (skratka sh) bol štandardným unixovým shellom pre systém Version 7 Unix, ktorý bol uvoľnený v roku 1977 a bol distribuovaný školám a univerzitám. Jeho autorom je Steph Bourne z AT&T Bell Laboratories. Bourne shell je súbor /bin/sh a ostáva stále implicitným shellom v mnohých unixových distribúciách.

Pôvod upraviť

Bourne shell nahradil pôvodný Thompson shell s rovnakým menom /bin/sh v systéme Version 7 Unix v roku 1977. Pretože väčšina súčasných unixových systémov vychádza práve z Version 7 Unix, je pôvodný Thompsonov shell považovaný za zastaraný a už sa nepoužíva. Štandardným shellom, na ktorý sa tak môžu programátori spoľahnúť, je práve Bourne shell.

V súčasnej dobe je /bin/sh často iba symbolický odkaz na bash (Bourne Again Shell), ktorý sa pri volaní týmto menom chová ako pôvodný Bourne shell.

Primárne ciele upraviť

  • povoliť shell skriptom, aby boli použité ako filtre
  • poskytovať programovateľnosť vrátane kontroly toku a premenných
  • ovládanie všetkých vstupov/výstupov ako popisovače súborov
  • kontrola signálov zistených vnútri skriptov
  • žiadne limity na dĺžky reťazcov pri interpretovaní shell skriptov
  • zjednodušenie a zovšeobecnenie mechanizmu citácií reťazcov

Tieto mechanizmy boli pridané do Verzie 7. Tieto súvislosti boli ustanovené na začiatku a poskytujú cestu shell skriptom k tomu, aby boli podskriptom v kontexte bez toho, aby museli užívať explicitné situačné parametre.

Významné rysy upraviť

Aj keď je užívaný ako interaktívny príkazový interpret, bol vždy myslený ako skriptovací jazyk. S vydaním knihy Unix od Briana W. Kernighana a Roba Pikeho programovacie prostredie shell získalo popularitu. Toto bola prvá komerčne publikovaná kniha, ktorá predstavovala shell ako programovací jazyk vo forme výuky.

Bourne shell bol tiež prvý, ktorý predstavoval konvenciu použitia file desctriptor 2 pre error messages, dovoľujúc omnoho väčšiu programovú kontrolu behu skriptu a držania správy o chybe oddelene od dát.

Inovácie upraviť

  • command substitution používanie spätných úvodzoviek: `command`.
  • používanie << ku vloženiu bloku vstupného textu vnútri skriptu.
  • for ~ do ~ done slučka zvlášť použitie $* slučky cez argument.
  • case ~ in ~ esac mechanizmus výberu hlavne k tomu, aby pomáhal syntaktickej analýze.
  • sh poskytol podporu pre prostredie premenných používajúcich parametre kľúčového slova a exportované do premennej.

V priebehu rokov bol Bourne shell rozšírený v AT&T. Rôzné varianty sú nazvané ako príslušné AT&T Unixové verzie, ktoré boli uvolnené (dôležitými variantmi sú Verzie7, SystemIII, SVR2, SVR3, SVR4). Pretože shell nebol nikdy verzia a jediný spôsob jeho identifikovania je otestovať jeho rysy.

Následovníci upraviť

Ako väčšina z následníkov bolo riadenie úloh zahrnuté do neskorších verzií Bourne shellu.

Korn shell (ksh) upraviť

Korn shell (ksh), omnoho neskôr napísaný Davidom Kornom, bol strednou cestou medzi dvoma shellmi so syntaxami prebraných z Bourne shellu a riadenie úloh vyťažených z C shellu. Funkčnosť z originálneho Korn shellu bola užívaná ako základ pre POSIX shell štandard. Od roku 2000 bol daný ako otvorený zdroj v novších verziách a je použitý v niektorých Linuxových distribúciách; tam je tiež klon známy ako pdksh.

RC upraviť

RC bol vytvorený v Bell Labs od Toma Duffa ako výmena za sh pre Unix Verzie 10. To je standard shell pre Plan 9 z Bell Labs a Inferno. Portový Unix bol súčasťou Plan 9 z User Space.

Bourne Again Shell (bash) upraviť

Bash (Bourne Again shell) bol neskôr vyvinutý pre GNU projekt a prebral rysy zo shellov Bourne shell, C shell a Korn shell.

Vplyvom autorského práva vyzerá prostredie Bourne shell rovnako, ako to bolo použité v BSD vydaniach. Kenneth Almquist vyvinul klon Bourne shell, známy ako Almquist shell a dostupný pod BSD licenciou, ktorý sa dnes používa na niektorých BSD nasledovníkoch. Almquist shell bol portovaný Linux premenovaný na Debian Almquist shell alebo dash. Tento shell poskytuje omnoho väčší výkon štandardných sh skriptov pri menšej pamäťovej záťaži než jeho bežnejší proťajšok bash. Bohužiaľ jeho použitie často odhalí bashismy – bash-centrické konštrukcie, ktoré v Bourne shellu nie sú dostupné a tvoria problémy, ak autor skriptu nešpecifikoval požiadavku na spustenie v bash.

Použitie upraviť

  • Bourne shell je teraz štandardný vo všetkých značkových Unixových systémoch, aj keď historicky BSD systémy mali mnoho skriptov napísaných v csh.
  • Bourne shell skripty môžu typicky bežať na bash alebo dash v Linuxe alebo ďalších Unix-like systémoch.
  • OpenSolaris variant z tohoto Bourne shell ako otvorený zdroj, bol shell dostupný pre voľný Unix v Heirloom projekte.
  • Solaris/SVR4 verzie Bourne shellu nemá rovnaký zdrojový kód ako originál.