Bourne shell

**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
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
* 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
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
* *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
Ako väčšina z následníkov bolo riadenie úloh zahrnuté do neskorších verzií Bourne shellu.

### Korn shell (ksh)
*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
*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)
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
* 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.

Kategória:Unix