Väčšina používateľov systému Linux často nevie o vnútornom fungovaní operačného systému. Na shell môžete dlho používať príkazy Linux, ale zamysleli ste sa niekedy nad tým, čo sa deje v zákulisí, keď narazíte na Zadajte?
Na konci budete mať krátke informácie o tom, ako shell spracováva zadaný príkaz v systéme Linux.
Spracovanie príkazu
Keď zadáte príkaz, prvá vec, ktorú shell urobí, je rozdeliť celý príkaz na „tokeny“. Shell potom vyhľadá názov programu, ktorý patrí prvému tokenu v príkazovom riadku.
Ak ho nenájde v žiadnom z adresárov vo vyhľadávacej ceste definovanej v premenná prostredia $ PATH alebo v miestnom adresári pomocou .\ operátor, alebo to nie je a alias škrupiny alebo funkcia shell, shell vydá chybu. Ak nájde platný príkaz, shell potom prejde všetkými ostatnými tokenmi a rozhodne, či ide o premennú, parameter shellu alebo argument príkazu.
Ak shell určí, že ide o premennú alebo parameter ako ~ operátor pre domovský adresár, shell ich rozšíri alebo ich nahradí pôvodnými hodnotami v príkaze.
Keď shell rozšíri všetky parametre alebo premenné, pošle ho do príkazového reťazca a spustí program s jeho argumentmi. Shell neurčuje, či sú nejaké argumenty platné. To je úloha veliteľa.
Spustenie príkazu
Keď shell spustí ďalší príkaz, ako sa vráti k tej istej výzve, akú ste používali predtým? Plášť vytvára kópiu seba samého, proces sa nazýva rozvetvenie. Táto kópia shellu sa nahradí príkazom so všetkými argumentmi, ktoré boli spracované skôr. Toto je známe ako „exec“ a kombinovaný proces je známy ako „fork-and-exec“.
Napríklad keď beháte príkaz ls, proces shellu sa sám rozdvojí pomocou súboru vidlička() metódu a vytvorte ďalšiu inštanciu shellu. Z dvoch procesov shellu spustených v systéme vykoná ďalší shell ls pomocou súboru exec () funkcia, ktorá sa transformuje na inštanciu príkazu ls.
Pôvodný shell medzitým čaká na dokončenie príkazu. To je dôvod, prečo môžete použiť riadenie úloh na pozastavenie úloh a spustenie úloh na pozadí v shelle.
Súvisiace: Čo je to proces v systéme Linux?
Hlásenie stavu výstupu
Príkazy Linux hlásia, či sa úspešne spustili alebo nie, prostredníctvom stavu ukončenia. Ako naznačuje názov, programy hlásia stav ukončenia po dokončení behu. Robia to prostredníctvom $? premenná prostredia, ktorá obsahuje stav ukončenia príkazu posledného spustenia.
Podľa konvencie stav ukončenia 0 znamená úspešné vykonanie, pričom čokoľvek iné ako 0 zvyčajne znamená chybu. Váš shell môže tiež indikovať nenulový stav ukončenia na príkazovom riadku v závislosti od konfigurácie vašej výzvy.
Vyššie uvedená snímka obrazovky je príkladom zobrazujúcim prispôsobenú výzvu Zsh, ktorá zobrazuje stav ukončenia chyby 127 v dôsledku neexistujúceho príkazu.
Teraz viete, ako fungujú príkazy Linuxu
Teraz, keď ste si vedomí toho, ako Linuxový shell spracováva príkaz, sám sa vidí a spúšťa a ako programy hlásia svoj stav ukončenia, môžete príkazový riadok využívať efektívnejšie.
Používateľom je bezplatne k dispozícii niekoľko Linuxových shellov. Aj keď každý z nich vykonáva viac -menej rovnakú prácu, v mnohých aspektoch sa líši. Môžete skúsiť nainštalovať niektoré škrupiny do svojho systému a sami sa rozhodnúť, ktorý vám najviac vyhovuje.
Hľadáte alternatívu linuxového bash shellu? Tu je prehľad toho, ktorý shell Linux je najlepší: tsch, fish, KornShell a Z Shell.
Čítajte ďalej
- Linux
- Príkazy Linux
- Linux Bash Shell
David je nezávislý spisovateľ so sídlom na severozápade Pacifiku, pôvodne však pochádza z oblasti Bay Area. Od detstva je technologickým nadšencom. Medzi Davidove záujmy patrí čítanie, sledovanie kvalitných televíznych relácií a filmov, retro hry a zbieranie rekordov.
prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!
Kliknutím sem sa prihlásite na odber