Preskočiť na obsah

Shell (informatika)

z Wikipédie, slobodnej encyklopédie
Grafické rozhranie podobné rozhraniam z konca 80. rokov 20. storočia: grafické okno s manuálovou stránkou, okno nepravidelného tvaru (oclock) a niekoľko okien zmenšených na ikony. Vpravo dole beží v emulátore terminálu unixový shell, do ktorého môže používateľ písať príkazy, akoby sedel pri terminále.

Shell operačného systému je počítačový program, ktorý poskytuje pomerne široký a priamy prístup k systému, na ktorom beží. Pojem shell vyjadruje, že ide o pomerne tenkú vrstvu okolo operačného systému.[1][2]

Väčšina shellov sú programy s rozhraním príkazového riadka (CLI). Niektoré shelly obsahujú aj grafické používateľské rozhranie (GUI).

Operačné systémy poskytujú používateľom rôzne služby vrátane správy súborov, správy procesov (spúšťanie a ukončovanie aplikácií), dávkového spracovania a monitorovania a konfigurácie operačného systému.

Väčšina shellov operačných systémov nie je priamym rozhraním k jadru systému, aj keď shell komunikuje s používateľom prostredníctvom periférnych zariadení pripojených priamo k počítaču. Shelly sú v skutočnosti špeciálne aplikácie, ktoré používajú API jadra rovnako ako ostatné aplikačné programy. Shell riadi interakciu medzi používateľom a systémom tak, že používateľa vyzve na vstup, vstup interpretuje a potom spracuje výstup z operačného systému (podobne ako cyklus čítaj – vyhodnoť – vypíš, angl. read–eval–print loop, REPL). Keďže shell operačného systému je v skutočnosti aplikácia, vo väčšine operačných systémov ho možno ľahko nahradiť inou podobnou aplikáciou.

Okrem shellov bežiacich na lokálnych systémoch existujú rôzne spôsoby, ako sprístupniť vzdialené systémy miestnym používateľom; tieto prístupy sa zvyčajne označujú ako vzdialený prístup alebo vzdialená správa. Vzdialený prístup bol pôvodne dostupný na viacpoužívateľských sálových počítačoch, ktoré poskytovali textové rozhranie každému aktívnemu používateľovi súčasne prostredníctvom textového terminálu pripojeného k sálovému počítaču sériovou linkou alebo modemom; neskôr sa rozšíril aj na unixové systémy a Microsoft Windows. V unixových systémoch sa pre textové shelly zvyčajne používa protokol Secure Shell (SSH), zatiaľ čo na grafické používateľské rozhrania založené na systéme X Window System možno použiť tunelovanie cez SSH. V Microsoft Windows je textový vzdialený prístup k dispozícii prostredníctvom vzdialeného spúšťania v PowerShelli (PowerShell Remote)[3] aj cez SSH, ktoré je podporované od Windows 10.[4] Remote Desktop Protocol (RDP) je proprietárny protokol vytvorený spoločnosťou Microsoft, ktorý umožňuje grafický vzdialený prístup.

Väčšina shellov operačných systémov patrí do jednej z dvoch kategórií – príkazové a grafické. Príkazové shelly poskytujú k operačnému systému rozhranie príkazového riadka (CLI), grafické shelly grafické používateľské rozhranie (GUI). Ďalšími, hoci menej bežnými možnosťami sú hlasové používateľské rozhranie a rôzne textové používateľské rozhrania (text-based user interface, TUI), ktoré nie sú rozhraním príkazového riadka, napríklad textové systémy ponúk. O relatívnych prednostiach shellov s rozhraním CLI a GUI sa často diskutuje. Mnohí používatelia počítačov používajú oba druhy podľa toho, akú úlohu vykonávajú.

Prvé interaktívne systémy obsahovali jednoduchý interpreter príkazového riadka ako súčasť monitora trvalo uloženého v pamäti (resident monitor). Tento interpreter mohol mať rôzne názvy, napríklad COMCON v systémoch TOPS-10 od spoločnosti DEC.[5] Interpreter vykonával jeden z niekoľkých preddefinovaných príkazov, z ktorých jeden spúšťal používateľský program. Bežné príkazy prihlasovali a odhlasovali používateľa zo systému, prideľovali, uvoľňovali a ovládali zariadenia a súbory a zisťovali rôzne informácie o systéme alebo o používateľskom procese.[6]

„ Účelom takejto procedúry je vytvoriť prostredie výmeny, v ktorom by bolo možné aktivovať akúkoľvek procedúru, akoby bola volaná zvnútra iného programu. Ďalej budeme túto procedúru pre zjednodušenie nazývať „SHELL“. “
– Louis Pouzin: The SHELL: A Global Tool for Calling and Chaining Procedures in the System[7]

Koncom roka 1964 alebo začiatkom roka 1965 prišiel Louis Pouzin pre operačný systém Multics s myšlienkou „používať príkazy podobne ako programovací jazyk“ a na jej označenie vytvoril pojem shell.[8] V dokumente z roku 1965 je shell definovaný ako „spoločná procedúra, ktorú supervízor automaticky zavolá vždy, keď používateľ napíše na svojej konzole nejakú správu v čase, keď pod kontrolou konzoly nevykonáva žiadny iný proces. Táto procedúra slúži ako rozhranie medzi správami z konzoly a podprogramom [v supervízore].“[7] Tento systém prvýkrát implementovali Glenda Schroeder a nemenovaný pracovník spoločnosti General Electric.[8]

Multics zaviedol aj takzvanú aktívnu funkciu (active function), kľúčový koncept niektorých neskorších shellov. Je definovaná ako

„ reťazec… ktorý sa pred vykonaním príkazového riadka, v ktorom sa nachádza, nahradí návratovou hodnotou v podobe reťazca znakov. Aktívne funkcie sa často používajú… na implementáciu makier príkazového jazyka.[9] “

V roku 1971 vyvinul Ken Thompson pre prvú verziu Unixu Thompsonov shell (Thompson shell). Hoci bol jednoduchší než shell systému Multics, obsahoval niekoľko inovatívnych prvkov, ktoré prevzali moderné shelly, vrátane použitia znakov < a > na presmerovanie vstupu a výstupu.

Grafický shell sa prvýkrát objavil v systéme NLS Douglasa Engelbarta, predvedenom v decembri 1968 na konferencii Fall Joint Computer Conference v San Franciscu v rámci prezentácie, ktorá sa neskôr začala označovať ako The Mother of All Demos („matka všetkých ukážok“). Engelbartovi kolegovia zo Stanford Research Institute preniesli tento koncept do výskumného centra Xerox Palo Alto Research Center (PARC), kde sa objavil na počítači Alto, predstavenom v roku 1973. Odtiaľ sa myšlienka rozšírila na počítač Lilith Niklausa Wirtha v roku 1980 a na počítač Lisa spoločnosti Apple v roku 1983 a potom sa stala všadeprítomnou.

Príkazové shelly

[upraviť | upraviť zdroj]
Príkazový riadok (Command Prompt), príkazový shell v systéme Windows.
Bash, rozšírený unixový shell.

Rozhranie príkazového riadka (CLI) je shell operačného systému, ktorý na interaktívne zadávanie pokynov a údajov operačnému systému používa alfanumerické znaky napísané na klávesnici. Napríklad ďalekopis môže posielať kódy reprezentujúce stlačené klávesy programu príkazového interpretera bežiacemu na počítači; interpreter postupnosť stlačení analyzuje a ak postupnosť znakov nerozpozná, odpovie chybovým hlásením, inak môže vykonať nejakú inú akciu programu, napríklad načítať aplikačný program, vypísať zoznam súborov, prihlásiť používateľa a mnohé ďalšie. Operačné systémy ako Unix majú veľké množstvo shellov s rôznymi príkazmi, syntaxou a možnosťami, pričom základom je shell podľa normy POSIX. Niektoré operačné systémy mali len jeden štýl príkazového rozhrania; bežné operačné systémy ako MS-DOS sa dodávali so štandardným príkazovým rozhraním (COMMAND.COM), ale často boli dostupné aj rozhrania tretích strán, ktoré poskytovali ďalšie vlastnosti alebo funkcie, napríklad ponuky alebo vzdialené spúšťanie programov.

Rozhranie príkazového riadka môžu implementovať aj aplikačné programy. Napríklad v unixových systémoch má program telnet niekoľko príkazov na ovládanie spojenia so vzdialeným počítačovým systémom. Keďže príkazy pre program sa skladajú z tých istých stlačení klávesov ako údaje posielané na vzdialený počítač, je potrebný nejaký spôsob, ako ich rozlíšiť. Možno definovať riadiacu (escape) sekvenciu, napríklad pomocou špeciálneho lokálneho stlačenia klávesu, ktoré sa nikdy neodosiela ďalej, ale vždy ho interpretuje lokálny systém. Program sa tak stáva modálnym – prepína medzi interpretovaním príkazov z klávesnice a odovzdávaním stlačení klávesov ako údajov na spracovanie.

Mnohé príkazové shelly umožňujú ukladať postupnosti príkazov na opakované použitie. Údajový súbor môže obsahovať postupnosti príkazov, ktoré rozhranie príkazového riadka vykoná, akoby ich zadal používateľ. Pri vykonávaní takto uložených pokynov môžu platiť osobitné funkcie rozhrania. Takéto dávkové súbory (skripty) možno používať opakovane na automatizáciu rutinných operácií, napríklad inicializácie súboru programov pri reštarte systému. Dávkové používanie shellov zvyčajne zahŕňa štruktúry, podmienky, premenné a ďalšie prvky programovacích jazykov; niektoré shelly majú len to najnutnejšie, iné sú samy osebe veľmi prepracovanými programovacími jazykmi. Naopak, niektoré programovacie jazyky možno používať interaktívne zo shellu operačného systému alebo v na to určenom programe.

Mnohé príkazové shelly, napríklad Xonsh, ponúkajú dopĺňanie príkazov (command-line completion), pri ktorom interpreter dokáže rozvinúť príkaz na základe niekoľkých znakov zadaných používateľom.[10]

Interpreter príkazového riadka môže ponúkať funkciu histórie, vďaka ktorej si používateľ môže vyvolať skôr zadané príkazy a zopakovať ich, prípadne po úprave. Keďže všetky príkazy pre operačný systém musel používateľ napísať, bežné boli krátke názvy príkazov a kompaktné spôsoby zápisu volieb programov. Krátke názvy si používatelia niekedy ťažko pamätali a prvé systémy nemali dostatok úložného priestoru na podrobnú on-line príručku.

Grafické shelly

[upraviť | upraviť zdroj]
Bližšie informácie v hlavnom článku: Grafické používateľské rozhranie

Grafické používateľské rozhranie (GUI) poskytuje prostriedky na grafické ovládanie programov – umožňuje napríklad otvárať, zatvárať, presúvať okná a meniť ich veľkosť a prepínať zameranie (focus) medzi oknami. Grafické shelly môžu byť súčasťou desktopových prostredí alebo sa môžu dodávať samostatne, dokonca ako súbor voľne prepojených nástrojov.

Väčšina grafických používateľských rozhraní rozvíja metaforu „elektronického stola“, v ktorej sú dátové súbory zobrazené, akoby boli papierovými dokumentmi na stole, a aplikačné programy majú podobne grafické znázornenie namiesto toho, aby sa spúšťali názvami príkazov.

Unixové systémy

[upraviť | upraviť zdroj]
Operácia ťahaj a pusti so skupinou súborov medzi programami KDesktop a Konqueror v prostredí KDE.

Grafické shelly sú zvyčajne postavené nad okenným systémom. V prípade systémov X Window System alebo Wayland sa shell skladá zo správcu okien systému X alebo z kompozitora (compositor) protokolu Wayland a z jedného alebo viacerých programov, ktoré umožňujú spúšťať nainštalované aplikácie, spravovať otvorené okná a virtuálne pracovné plochy a často aj podporujú nástroj na miniaplikácie (widget engine). GNOME Shell a KDE Plasma sú grafické shelly pre X Window System a Wayland.

V systéme macOS slúži ako okenný systém Quartz Compositor a shell tvoria Finder,[11] Dock,[11] SystemUIServer[11] a Mission Control.[12]

Microsoft Windows

[upraviť | upraviť zdroj]

Moderné verzie operačného systému Microsoft Windows používajú ako shell Windows shell. Poskytuje desktopové prostredie, ponuku Štart a panel úloh, ako aj grafické používateľské rozhranie na prístup k funkciám správy súborov operačného systému. Staršie verzie obsahujú aj Správcu programov (Program Manager), ktorý bol shellom radu Microsoft Windows 3.x a ktorý sa v skutočnosti dodával aj s neskoršími verziami Windows radov 95 aj NT, prinajmenšom až po Windows XP. Rozhrania Windows verzií 1 a 2 boli výrazne odlišné.

Za shelly sa považujú aj desktopové aplikácie, pokiaľ používajú jadro tretej strany. Mnohí jednotlivci a vývojári nespokojní s rozhraním programu Windows Explorer tiež vyvinuli softvér, ktorý buď mení fungovanie a vzhľad shellu, alebo ho úplne nahrádza. Dobrým príkladom prvého druhu aplikácie je WindowBlinds od spoločnosti Stardock. LiteStep a Emerge Desktop sú dobrými príkladmi druhého druhu.

Vyvolanie z programu

[upraviť | upraviť zdroj]

Shell možno zvyčajne vyvolať aj zvnútra programu pomocou štandardných systémových funkcií, ako sú system(), popen() a exec(), bez toho, aby sa použilo akékoľvek používateľské rozhranie.

Okrem týchto štandardných funkcií poskytuje napríklad Windows rozhranie „Windows Shell API“, ktoré sprístupňuje súbor funkcií, ktoré programy môžu použiť na interakciu so shellom Windows. Tieto funkcie shellu sú k dispozícii v knižniciach DLL (napríklad shell32.dll a shlwapi.dll) a nevyžadujú, aby bolo spustené predvolené grafické rozhranie shellu Windows, t. j. explorer.exe. Explorer.exe a jeho náhrady spravidla využívajú Windows Shell API, aby používateľom poskytli grafické rozhranie shellu Windows bez toho, aby museli samy implementovať jeho základné funkcie (tie implementujú a poskytujú knižnice shell32.dll a shlwapi.dll). Programy však môžu Windows Shell API používať aj na iné účely a bez toho, aby používateľom poskytovali používateľské rozhranie shellu.

Iné použitia

[upraviť | upraviť zdroj]

Slovo „shell“ sa voľnejšie používa aj na označenie aplikačného softvéru, ktorý je „postavený okolo“ určitého komponentu, napríklad webových prehliadačov a e-mailových klientov, v analógii so schránkami (škrupinami) v prírode. Napokon aj (príkazový) shell obaľuje jadro operačného systému. Takéto programy sa niekedy označujú aj ako „obaly“ (wrappers).[2]

V expertných systémoch je shell softvér, ktorý predstavuje „prázdny“ expertný systém bez bázy znalostí pre konkrétnu aplikáciu.[13]

Referencie

[upraviť | upraviť zdroj]
  1. ↑ The Internet's fifth man. The Economist (London: Economist Group), 2013-12-13. Dostupné online. Archivované 2020-04-19 z originálu. (po anglicky)
  2. 1 2 shell [online]. The Jargon File (ed. Eric S. Raymond). Dostupné online. (po anglicky)
  3. ↑ WHEELER, Sean. Running Remote Commands [online]. Microsoft Docs, 2018-10-14, [cit. 2019-06-30]. Dostupné online. (po anglicky)
  4. ↑ TEOCCI. How to SSH into Windows 10 or 11? [online]. GitHub Gist, [cit. 2025-01-24]. Dostupné online. (po anglicky)
  5. ↑ DIGITAL EQUIPMENT CORPORATION. TOPS-10 MONITOR INTERNALS. [s.l.] : [s.n.], 1980. S. CMND-1–CMND-16. (po anglicky)
  6. ↑ DIGITAL EQUIPMENT CORPORATION. DECSystem 10 Operating System Commands Manual. [s.l.] : [s.n.], 1977. [cit. 2022-03-29]. Dostupné online. (po anglicky)
  7. 1 2 POUZIN, Louis. The SHELL: A Global Tool for Calling and Chaining Procedures in the System [online]. 1965-04-02. Dostupné online. (po anglicky)
  8. 1 2 POUZIN, Louis. The Origin of the Shell [online]. multicians.org, [cit. 2022-03-29]. Dostupné online. (po anglicky)
  9. ↑ Multics Common Commands. [s.l.] : Honeywell Inc., 1983. [cit. 2025-12-30]. Dostupné online. S. 1-1–1-2. (po anglicky)
  10. ↑ Xonsh Official Website [online]. xon.sh. Dostupné online. (po anglicky)
  11. 1 2 3 The Life Cycle of a Daemon [online]. Apple Inc.. Dostupné online. (po anglicky)
  12. ↑ Restart Mission Control in OS X Lion [online]. OSXDaily, 2011-11-23. Dostupné online. (po anglicky)
  13. ↑ British Computer Society: The BCS glossary of ICT and computing terms. [s.l.] : Pearson Education, 2005. Dostupné online. ISBN 978-0-13-147957-9. S. 135. (po anglicky)
  • Porovnanie príkazových shellov (Comparison of command shells)
  • Interakcia človeka s počítačom
  • Internet Explorer shell
  • Shellové konto (shell account)
  • Vstavaný príkaz shellu (shell builtin)
  • Superpoužívateľ (superuser)
  • Unixový shell (Unix shell)
  • Správca okien
  • Cyklus čítaj – vyhodnoť – vypíš (read–eval–print loop)

Iné projekty

[upraviť | upraviť zdroj]

Tento článok je čiastočný alebo úplný preklad článku Shell (computing) na anglickej Wikipédii.