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.
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:
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.
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.
Grafická uživatelská rozhraní pro Unix, například GNOME a KDE, jsou občas nazývána vizuální shell nebo grafický shell.
Seznam standardních UNIXových a UN*Xových příkazů lze najít v samostatném článku seznam unixových utilit.
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 (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 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.
V tomto článku byl použit překlad textu z článku Unix shell na anglické Wikipedii.