Unixový shell

interpret příkazového řádku v unixových systémech
Další významy jsou uvedeny na stránce 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.

Screenshot Bashe, jednoho z běžných Unixových shellů

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

editovat

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

editovat

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:

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

editovat

Shelly kompatibilní s C shellem

editovat

Netradiční

editovat
  • 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.
  • 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é

editovat
  • 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

editovat

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

editovat

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

editovat

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

editovat

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

editovat

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.

Reference

editovat

V tomto článku byl použit překlad textu z článku Unix shell na anglické Wikipedii.

  1. Is tclsh or wish suitable as a login shell [online]. [cit. 2018-10-18]. Dostupné online. 

Literatura

editovat
  • 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

editovat

Externí odkazy

editovat