Deprecated: Function set_magic_quotes_runtime() is deprecated in /DISK2/WWW/lokiware.info/mff/wakka.php on line 35 Matfiz : Unixový Shell
Přihlášení:  Heslo:  
Matfiz: UnixovýShell ...
Hlavní Stránka | Seznam Stránek | Poslední Změny | Poslední Komentované | Uživatelé | Registrace |
Toto je stará verze stránky UnixovýShell z 2007-02-27 21:31:38..

Unixový shell a jeho skriptování


Základní informace o unixovém shellu, příručky i tutorialy najdete jinde, tady se pokusme dát dohromady věci zajímavé souvislosti s tím, co se po nás chce v rámci předmětu Úvod Do Unixu.

Standardy, co je «původní» shell a jak se vyhnout bashismům

Na přednášce RNDr. Libora Forsta bylo myslím řečeno, že něco na ten způsob, že bychom všechno měli umět naprogramovat v nějakém původním, nerozšířeném, nebo kdovíjakém shellu, ve slajdech se mluví o /bin/sh a v literatuře je odkaz na knížku o Korn Shellu, na školních počítačích je třetí verze Bashe. Trochu zmatek, co?


Zdrojáky některé verze původního Bourne shellu (to je ten původní, nebo spíše jsou ty původní, protože o nějakých standardech nemůže být řeč) se dají na internetu najít, s tím se ale nemá cenu otravovat, pokud nejste vyloženě fandové na historii. C Shell (resp. i novější tcsh), je tak trochu perverzní shell, kterému je lépe se obloukem vyhnout, už proto, že má úplně jinou syntaxi než, ostatní shelly (lákavou, ale jen na první pohled). Na Korn shellu jsou sice založeny současné standardy, to ovšem neznamená, že Korn shell je sám o sobě standardní, standardní je jen jeho podmnožina. Pokud máte na svém Linuxu nějaký /bin/sh je to buď jen odkaz na Bash, nebo nějaká jeho ořezanou verzi, i když se Bash volaný jako /bin/sh snaží emulovat starý Bourne shell, je to pořád jen Bash.


Takže pozor /bin/sh tedy u většiny z vás není Bourne shell, navzdory tomu, co tvrdí Forstovy slajdy. U něj na FreeBSD je to nejspíš Almquist Shell, což je hodně blízko, ale na Linuxu je to téměř bez výjimky Bash, viz dále.


Nejlepší shell na otestování standardnosti skriptů je zřejmě Almquist Shell, který možná znáte z embedded zařízení (různých NAS, bezdrátových routerů apod.), který je jednak součástí NetBSD, jednak je vyvíjen jako samostatný projekt DASH, má i debianovský balíček. Dash má jen málo funkcí, které neodpovídají současným standardům, a také se ze současných shellů nejvíce blíží původnímu Bourne shellu. V Ubuntu se ho myslím chystají použít jako /bin/sh.


A jak je to tedy s těmi standardy? V současnosti je nejlepší referencí Single Unix Specification verze 3, následník starších norem SUS a POSIX. Ve svazku o shellu a nástrojích se dá najít jak přehledný popis vlastností standardního shellu, tak jakoby-manuálové-stránky základních příkazů.


Samozřejmě nevím, do jaké míry na to bude Forst u zkoušky přísný, ale tohle je podle mě jistá a jednoduchá cesta, jak se vyhnout problémům, a přinejmenším by to někoho mohlo zajímat:).


Co není přenositelné

Pár věcí, co vás možná překvapí:


Vnější odkazy


 
Na stránce nejsou žádné soubory. [Zobrazit soubory (formulář)]
Na stránce je jeden komentář. [Zobrazit komentáře (formulář)]