Skriptování v Bournově shellu/Srovnání shellů

Z Wikiknih
Skočit na navigaci Skočit na vyhledávání
Srovnání shellů Skriptování v Bournově shellu/Spouštění příkazů ►

Úvody podobných knížek bývají věnovány přesvědčování čtenáře, že nástroj popisovaný v knize je lepší než jeho konkurenti. V našem případě tomu tak nebude. A proč to tak nebude, bude jasné, až dočtete tuto kapitolu.

Bournův shell a jiné unixové shelly[editovat]

Během dlouhého vývoje un*xových systémů vznikla celá řada shellů a Bournův shell je tak jen jedním z mnoha. V jakém jsou jednotlivé shelly vztahu? Je nějaký lepší než jiné? Pojďme se podívat, co to vlastně shell je a jak jsou shelly rozmanité.

Jak to všechno začalo...[editovat]

Unixový operační systém se od svého vzniku v sedmdesátých letech vyznačuje svou orientací na pokročilé uživatele, kteří chtějí systém využít do krajnosti a vytáhnout z něj veškerý možný výkon. A kteří mají k takovému užití počítače patřičné znalosti a schopnosti. Unix byl navržen tak, aby si jej uživatel mohl upravovat a programovat podle svých potřeb a zájmů. Samotný systém nemá žádné rozhraní pro koncového uživatele, skládá se z jádra operačního systému a knihovny jazyka C. Pokud není Vaším cílem v rámci dennodenní práce skutečně programovat, ale jen systém používat bez velkého upravování (snad jen s občasným vytvořením krátkého pomocného prográmku), přišlo by Vám to v případě čistého Unixu poměrně pracné.

Takže už na začátku byla jasná potřeba poskytnout uživateli nástroj umožňující mu používat nabízené funkce operačního systému a knihovny, aniž by musel doopravdy programovat. Nástroj, kterému by uživatel mohl rychle a snadno předat jednoduché příkazy, které budou předány operačnímu systému a vykonány. Bez nutnosti pouštět textový editor nebo spouštět mocný překladač.

Úkolu se ujal Stephen Bourne a vytvořil jednoduchoučký překladač, který dokázal zařídit vykonání vždy jen jednoho příkazu. Moderní řečí se vlastně jednalo o interpret(er), Stephen Bourne ho ovšem nazval shell. Anglické slovo shell znamená doslova obal či schránka a dobře vystihuje jeho princip: Shell je obalem operačního systému, přes který k systému přistupuje uživatel.

Stephen Bourne odvedl dobrou práci, shell zrychlil práci uživatelů a byl nazván po svém tvůrci Bournovým shellem (anglicky Bourne Shell). Jeho spustitelný soubor se jmenuje stručně sh a to jméno je už natolik spjaté s unixovým světem, že prakticky každý Unix na světě pod jménem sh nabízí přinejmenším nějakou napodobeninu původního Bournova shellu.

... a jak se to vyvinulo[editovat]

Bournův shell se nesmírně rozšířil a stal se faktickým standardem mezi unixovými shelly. Ovšem s množstvím uživatelů přišlo i množství nápadů, jak shell rozšířit o nové vlastnosti, jak v něm umožnit ještě přátelštější vkládání příkazů, zkrátka jak ho různými způsoby upravit. Mnoho uživatelů vytvořilo nové shelly a pokládalo je za pokračovatele Bournova shellu. Některé byly s Bournovým shellem úplně kompatibilní, jiné jen částečně. Některé se proslavily a rozšířily, jiné upadly v zapomnění. Ale prakticky všechny vzhlížely k Bournově shellu jako ke svému vzoru, vlastně jako ke svému tátovi ...

A řada z těchto dalších shellů dokonce nabízí přepínače, jejichž použití vynutí sh-režim, ve kterém se chovají co nejvíc podobně původnímu Bournovu shellu. Uživatelé ovšem tyto přepínače používají výjimečně a spíše nechají shelly běžet v režimu, ve kterém lze lépe využít jejich pokročilých vlastností.

Bournův shell, jak ho neznáte[editovat]

Takže dnes je po světě spousta shellů, ale Bournův shell je prakticky všude? Ve svém adresáři /bin sedí vždycky starý dobrý sh a bude tam až do konce světa...?

Ne, ve skutečnosti ne. Pod jménem sh se dnes většinou neskrývá Bournův shell. Unixové souborové systémy nabízí takzvané symbolické odkazy, pomocí kterých může mít soubor několik jmen. Takže většinou to funguje tak, že se při instalaci operačního systému nainstaluje nějaký moderní klon Bournova shellu, a k němu se vytvoří patřičná přezdívka.

Shellem dnes nejpoužívanějším je Bash, který má poměrně vysokou míru kompatibility s Bournovým shellem a vlastně se po něm i jmenuje: Ta zkratka totiž znamená Bourne Again SHell, doslova znovu Bournův shell, ale také je to slovní hříčka (Podobá se Born-again shell, což by znamenalo znovuzrozený shell).

Jiným známým shelem je Kornův shell (ksh). Jedná se o čisté rozšíření, je plně kompatibilní s Bournovým shellem.

Třetím stále ještě poměrně rozšířeným shellem je C shell a jeho následník tcsh, které jsou doma na BSD systémech. Tyhle shelly jsou poměrně nekompatibilní, řada jejich příkazů je od Bournova shellu dost odlišná. Právě na těch systémech, kde jsou nainstalovány, je největší šance potkat souběžně nainstalovaný Bournův shell připravený na vykonávání skriptů pro něj určených.

Takže už víte, proč nemá smysl Vás přesvědčovat k používání Bournova shellu místo jiných shellů. Obvykle to není podstatný rozdíl. Bournův shell a jeho odkaz se staly natolik součástí unixového světa, že vlastně používáte Bournův shell pokaždé, když používáte unixový ýshell.

Proč Bournův shell[editovat]

Je tedy vlastně nějaký důvod, proč se omezit na používání Bournova shellu? Proč s výhodou nevyužívat pokročilé možnosti nějakého novějšího shellu?

Tahle otázka nemá jednoduchou odpověď, závisí totiž na okolnostech. Obvykle asi žádný důvod není. A navíc nejčastěji stejně pravděpodobně používáte právě ty základní vlastnosti svého shellu, v kterých je s Bournovým shellem kompatibilní.

Ale jednou se může stát, že napíšete tak užitečný skript, že ho budete chtít dávat ke spuštění jiným lidem, nebo ho jen pouštět na spoustě různých počítačů. A v takovou chvíli se může použití rozšířených možností moderních shellů nevyplatit kvůli nekompatibilitě. To je ta chvíle, kdy oceníte, pokud jste svůj skript napsali pro Bournův shell, který je skoro všude a jehož skripty dokáží víceméně interpretovat i jiné shelly.

Srovnání shellů Skriptování v Bournově shellu/Spouštění příkazů ►