Většina uživatelů Linuxu často neví o interním fungování operačního systému. Možná na shellu spouštíte příkazy Linuxu delší dobu, ale zajímalo vás někdy, co se děje v zákulisí, když narazíte na Vstupte?
Na konci budete mít krátké znalosti o tom, jak shell zpracovává zadaný příkaz v Linuxu.
Zpracování příkazu
Když zadáte příkaz, první věcí, kterou shell udělá, je rozdělit celý příkaz na „tokeny“. Shell poté vyhledá název programu patřící k prvnímu tokenu na příkazovém řádku.
Pokud jej nenajde v žádném z adresářů ve vyhledávací cestě definované v proměnná prostředí $ PATH nebo v místním adresáři pomocí .\ operátor, nebo to není a alias skořápky nebo funkce shell, shell vydá chybu. Pokud najde platný příkaz, shell poté projde každým z ostatních tokenů a rozhodne, zda je to proměnná, parametr shellu nebo argument příkazu.
Pokud shell zjistí, že se jedná o proměnnou nebo parametr jako ~ operátor pro domovský adresář, shell je rozšíří nebo je v příkazu nahradí jejich původními hodnotami.
Když shell rozbalí všechny parametry nebo proměnné, předá je příkazovému řetězci do příkazu a spustí program s jeho argumenty. Shell neurčuje, zda jsou nějaké argumenty platné. To je úkolem velení.
Spuštění příkazu
Když shell spustí další příkaz, jak se vrátí do stejné výzvy, kterou jste používali dříve? Shell vytvoří kopii sebe sama, což je proces, kterému se říká rozdvojení. Tato kopie shellu se nahradí příkazem se všemi argumenty, které byly zpracovány dříve. Toto je známé jako „exec“ a kombinovaný proces je známý jako „fork-and-exec“.
Například když běžíte příkaz ls, proces shellu se sám rozdvojí pomocí Vidlička() metodu a vytvořte další instanci shellu. Ze dvou procesů shellu spuštěných v systému provede další shell ls pomocí exec () funkce, transformující se na instanci příkazu ls.
Mezitím původní shell čeká na dokončení příkazu. To je důvod, proč můžete pomocí řízení úloh pozastavit úlohy a nechat úlohy spouštět na pozadí v prostředí.
Příbuzný: Co je to proces v Linuxu?
Hlášení stavu ukončení
Příkazy Linux hlásí, zda proběhly úspěšně, nebo ne prostřednictvím jejich stavu ukončení. Jak název napovídá, programy hlásí stav ukončení po dokončení běhu. Dělají to prostřednictvím $? proměnná prostředí, která obsahuje stav ukončení příkazu posledního spuštění.
Podle konvence stav ukončení 0 znamená úspěšné provedení, zatímco cokoli jiného než 0 obvykle znamená chybu. Váš shell může také indikovat nenulový stav ukončení na příkazovém řádku v závislosti na tom, jak je vaše výzva nakonfigurována.
Výše uvedený snímek obrazovky je příkladem zobrazené přizpůsobené výzvy Zsh, která ukazuje stav ukončení chyby 127 kvůli příkazu, který neexistuje.
Nyní víte, jak fungují příkazy Linuxu
Nyní, když jste si vědomi toho, jak Linuxový shell zpracovává příkaz, sám se rozděluje a spouští a jak programy hlásí svůj stav ukončení, můžete efektivněji využívat příkazový řádek.
Několik linuxových prostředí je uživatelům k dispozici zdarma. Zatímco každý z nich vykonává víceméně stejnou práci, v mnoha aspektech se liší. Můžete zkusit nainstalovat některé shelly do svého systému a sami se rozhodnout, který vám nejvíce vyhovuje.
Hledáte alternativu linuxového bash shellu? Zde je přehled toho, který Linux shell je nejlepší: tsch, fish, KornShell a Z Shell.
Číst dále
- Linux
- Příkazy Linux
- Linux Bash Shell
David je nezávislý spisovatel se sídlem na severozápadě Pacifiku, původně ale pocházel z oblasti Bay. Od dětství je technologickým nadšencem. Mezi Davidovy zájmy patří čtení, sledování kvalitních televizních pořadů a filmů, retro hraní a sbírání záznamů.
Přihlaste se k odběru našeho zpravodaje
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!
Kliknutím sem se přihlásíte k odběru