Unixový shell
Unixový shell (též příkazový procesor, v doslovném překladu „unixová skořápka“) je název textového uživatelského rozhraní, které je předchůdcem grafického uživatelského rozhraní. Shell je spuštěn po přihlášení uživatele do systému, vytvoří příkazový řádek, pomocí kterého uživatel může počítač ovládat a jeho ukončením je uživatel ze systému odhlášen.
Shell je tradičním rozhraním pro operační systém UNIX a Unix-like systémy, ve kterých si uživatel může vybrat z široké nabídky různých shellů. V operačním systému DOS slouží ke stejnému účelu program COMMAND.COM s výrazně nižšími schopnostmi. V systémech IBM OS/2 a Microsoft Windows NT a novějších ho nahrazuje program cmd.exe, který byl inovován v posledních verzích Windows na Windows PowerShell a unixovým shellům se tak přibližuje.
Příkazový řádek
Shell vytváří prostředí příkazového řádku, do kterého uživatel zadává názvy příkazů, které chce spustit. Shell tyto příkazy interpretuje, spouští odpovídající programy a umožňuje sledovat jejich výstup. Umožňuje příkazům předávat parametry, seskupovat je, slučovat příkazy do skriptů a podobně. Shell představuje „skořápku“, která skrývá uživateli detaily ovládání jádra (kernelu) operačního systému. Mnoho uživatelů unixových systémů dosud považuje moderní příkazový řádek shellu za mnohem pohodlnější způsob ovládání počítače než grafické uživatelské rozhraní.
Příkazy se volají tak, že se napíše jméno příkazu a za něj parametry. Parametry se obvykle dělí na tři druhy:
- krátké jednoznakové volby, uvozené pomlčkou. Je možné je spojovat: ls -lisa je volání příkazu ls s volbami l, i, s a a.
- dlouhé volby, uvozené dvěma pomlčkami. Například ls --all nebo s parametrem volby ls --format=single-column. Speciální parametr -- obvykle znamená konec voleb, tedy že další parametr není volba i když začíná pomlčkou.
- „obyčejné“ (neuvozené) parametry, obvykle jména souborů.
Před spuštěním příkazu provádí shell nad příkazovou řádkou několik transformací: nahrazuje proměnné jejich obsahem, rozbaluje wildcardové výrazy na seznamy jmen souborů, které jim odpovídají, rozdělení řádky na jednotlivé argumenty a další. Pokud napíše uživatel mv * dir, je to shell a nikoliv program mv, kdo nahradí hvězdičku (triviální příkaz wildcardového výrazu) seznamem všech souborů v aktuálním adresáři. Pokud chceme předat nějakému příkazu skutečně hvězdičku nebo jiný znak se zvláštním významem (např. mezera, která má zvláštní význam oddělování parametrů), nejjednodušší cestou je dát ji do uvozovek: shell při zpracování příkazové řádky uvozovky odstraní, ale jejich obsah ponechá nezměněný. V jednoduchých uvozovkách nemění vůbec nic, ve dvojitých stále nahrazuje proměnné. Přesné chování při zpracování příkazové řádky a seznam znaků se speciálním významem závisí na konkrétním shellu.
Různé shelly
Shell je z hlediska systému program, který je zpravidla spuštěn v okamžiku přihlášení uživatele do systému. Ve většině unixových systémů si uživatelé mohou vybrat shell, který chtějí použít.
Nejdůležitějšími shelly jsou:
- Bourne shell (sh)
- Bourne-again shell (bash)
- C shell (csh)
- Korn shell (ksh)
- TENEX C shell (tcsh)
V raných verzích Unixu byl používán Bourne shell, který se stal de facto standardem; každý unixový systém má přinejmenším jeden shell kompatibilní s Bourne shellem. V souborové hierarchii je takový shell umístěn v /bin/sh. Na některých systémech, jako BSD, je /bin/sh Bourne shell nebo jeho ekvivalent, ale v ostatních systémech jako Linux je /bin/sh obvykle odkaz na kompatibilní, ale funkčně bohatší shell. Norma POSIX specifikuje standardní shell jako striktní podmnožinu Korn shellu.
Shelly v Unixu mohou být rozděleny zhruba do čtyř kategorií: shelly podobné Bourne shellu, podobné C Shellu, netradiční a historické. Na většině unixových systémů můžete použít pro zjištění, jaký shell používáte, příkaz echo $SHELL.
Shelly kompatibilní s Bourne shellem
- Bourne shell (sh) – Napsal Steve Bourne v Bell Labs. Poprvé distribuován s Unixem 7, přibližně v roce 1978, a postupně vylepšen.
- Almquist shell (ash) – Napsán jako náhrada Bourne Shellu pod BSD licencí; je často používán na slabém hardwaru.
- Bourne-Again shell (bash) – Napsán jako část projektu GNU, aby rozšiřoval funkčnost Bourne shellu.
- Korn shell (ksh) – Napsal David Korn v Bell Labs.
- Z shell (zsh)
Shelly kompatibilní s C shellem
- C shell (csh) – Napsal Bill Joy na University of California v Berkeley. Prvně distribuováno s BSD, kolem roku 1979.
- TENEX C shell (tcsh)
Netradiční
- fish, „přátelský interaktivní shell“, prvně vydaný v roce 2005.
- mudsh, inteligentní hře podobný shell, který funguje jako MUD.
- zoidberg, napsaný, konfigurovaný a operující výhradně v Perlu
- rc, standardní shell z Plan 9 from Bell Labs a UNIXu 10, napsal Tom Duff.
- es, shell podporující funkcionální programování, napsán v polovině 90. let.
- scsh (Scheme Shell)
- tclsh a wish, interpret jazyka Tcl, v případě wish zahrnující i grafické prostředí Tcl/Tk, přes svůj název nebyly navrženy jako interaktivní přihlašovací shelly[1].
Historické
- Thompson shell – První Unixový shell, napsal Ken Thompson v Bell Labs. Distribuován s verzemi Unixu od 1. do 6., od roku 1971 do 1975. Moderními standardy považován za základní a na současných systémech se již nepoužívá, ačkoli je dostupný jako část starých unixových systémů.
- PWB shell nebo také Mashey shell – Verze Thompsonova shellu, rozšířil John Mashey a ostatní, když byli v Bell Labs. Distribuována s Programmer’s Workbench UNIX okolo roku 1976.
Grafické shelly
Grafická uživatelská rozhraní pro Unix, například GNOME a KDE, jsou občas nazývána vizuální shell nebo grafický shell.
Příkazy v Unixu
Seznam standardních UNIXových a UN*Xových příkazů lze najít v samostatném článku seznam unixových utilit.
Shellové procesy se speciálním významem
Shell může připravit pracovní prostředí uživatele provedením příkazů uvedených v konfiguračních souborech. Při rozhodování, jaké soubory se provedou v různých situacích, záleží na tom, zda se jedná o přihlašovací nebo interaktivní shell.
Přihlašovací shell
Přihlašovací shell (anglicky login shell) je první shell (první proces, který je shellem), který se spouští po interaktivním přihlášení uživatele. Jeho jméno včetně cesty udává sedmá položka v popisu uživatele v souboru /etc/passwd
nebo v databázi uživatelů, která tento soubor nahrazuje.
Interaktivní shell
Interaktivní shell je shell, který komunikuje s uživatelem – umožňuje mu zadávat příkazy a zobrazuje jejich výsledky. Interaktivním shellem je přihlašovací shell, další interaktivní shelly je možné spustit z něho nebo z nějakého jiného programu.
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Unix shell na anglické Wikipedii.
- ↑ Is tclsh or wish suitable as a login shell [online]. [cit. 2018-10-18]. Dostupné online.
Literatura
- Nešvera Šimon – Richta Karel – Zemánek Petr: Úvod do operačního systému UNIX. 1. vyd. Praha : České vysoké učení technické, 1991.
- Dokumentační projekt – LINUX. 3. vydání, Computer Press 2003 (PDF).
- Ellie Quigley (2001). Introduction to Unix shells. Prentice Hall PTR. ISBN 0-13-066538-X.
Související články
Externí odkazy
- Obrázky, zvuky či videa k tématu unixový shell na Wikimedia Commons
- https://web.archive.org/web/20070928101453/http://www-hep2.fzu.cz/computing/informace/section3_3.html – příkazy shellu
- https://web.archive.org/web/20070928015652/http://manpages.unixforum.co.uk/man-pages/linux/suse-linux-10.1/1/sh-man-page.html – manuálová stránka programu sh (Suse Linux 10.1, anglicky) – neplatný odkaz !
- https://web.archive.org/web/20150610210452/http://www.mff.cuni.cz/fakulta/mfp/download/books/forst_-_shell_v_prikladech.pdf Libor Forst, Shell v příkladech, Matfyzpress 2010, Praha – neplatný odkaz !