De meeste Linux-gebruikers zijn zich vaak niet bewust van de interne werking van het besturingssysteem. Je hebt misschien lange tijd Linux-commando's op de shell uitgevoerd, maar heb je je ooit afgevraagd wat er achter de schermen gebeurt als je op Binnenkomen?
Aan het einde zul je een kort begrip hebben van hoe de shell het getypte commando in Linux verwerkt.
De opdracht verwerken
Wanneer u een opdracht invoert, is het eerste wat de shell doet, de hele opdracht in "tokens" opbreken. De shell zoekt dan naar een programmanaam die bij het eerste token in de opdrachtregel hoort.
Als het het niet vindt in een van de mappen in het zoekpad gedefinieerd in de omgevingsvariabele $PATH of in de lokale map met de .\ operator, of het is geen shell alias of shell-functie, zal de shell een foutmelding geven. Als het een geldige opdracht vindt, gaat de shell door elk van de andere tokens en beslist of het een variabele, een shell-parameter of een argument voor de opdracht is.
Als de shell bepaalt dat het een variabele of een parameter is zoals de
~ operator voor de homedirectory, zal de shell ze uitbreiden of vervangen door hun originele waarden in de opdracht.Wanneer de shell parameters of variabelen heeft uitgebreid, zal het de commandoreeks doorgeven aan het commando, waarbij het programma met zijn argumenten wordt uitgevoerd. De shell bepaalt niet of argumenten geldig zijn. Dat is de taak van het commando.
De opdracht uitvoeren
Wanneer de shell een ander commando start, hoe komt het dan terug naar dezelfde prompt die je eerder gebruikte? De shell maakt een kopie van zichzelf, een proces dat forking wordt genoemd. Deze kopie van de shell vervangt zichzelf door de opdracht, met alle argumenten die eerder zijn verwerkt. Dit staat bekend als een 'exec' en het gecombineerde proces staat bekend als 'fork-and-exec'.
Als je bijvoorbeeld rent het ls-commando, zal het shell-proces zichzelf splitsen met behulp van de vork() methode en maak een andere shell-instantie. Van de twee shell-processen die op het systeem draaien, zal de extra shell ls uitvoeren met behulp van de exec() functie, die zichzelf transformeert in een instantie van het ls-commando.
Ondertussen wacht de originele shell tot het commando is voltooid. Daarom kunt u taakbeheer gebruiken om taken op te schorten en taken op de achtergrond in de shell te laten uitvoeren.
Verwant: Wat is een proces in Linux?
De uitgangsstatus rapporteren
Linux-commando's rapporteren of ze met succes door hun exit-status zijn gegaan of niet. Zoals de naam al doet vermoeden, melden programma's hun afsluitstatus wanneer ze klaar zijn met werken. Dit doen ze via de $? omgevingsvariabele, die de exit-status van de laatste run-opdracht bevat.
Volgens afspraak geeft een exit-status van 0 een succesvolle uitvoering aan, terwijl iets anders dan 0 meestal een fout betekent. Uw shell kan ook een exit-status aangeven die niet nul is op de opdrachtregel, afhankelijk van hoe uw prompt is geconfigureerd.
De bovenstaande schermafbeelding is een voorbeeld van een aangepaste Zsh-prompt met een exit-foutstatus van 127 vanwege een opdracht die niet bestaat.
Nu weet je hoe Linux-commando's werken
Nu je je bewust bent van hoe de Linux-shell een commando verwerkt, afsplitst en execs zelf, en hoe programma's hun exit-status rapporteren, kun je effectiever gebruik maken van de commandoregel.
Verschillende Linux-shells zijn gratis beschikbaar voor de gebruikers. Hoewel ze allemaal min of meer hetzelfde werk doen, zijn ze in veel opzichten verschillend. U kunt proberen enkele shells op uw systeem te installeren en zelf beslissen welke het beste bij u past.
Op zoek naar een alternatief voor Linux bash shell? Hier is een overzicht van welke Linux-shell het beste is: tsch, fish, KornShell en Z Shell.
Lees volgende
- Linux
- Linux-opdrachten
- Linux Bash Shell
David is een freelance schrijver gevestigd in de Pacific Northwest, maar oorspronkelijk afkomstig uit de Bay Area. Van kinds af aan is hij een technologieliefhebber. Davids interesses omvatten lezen, tv-programma's en films van hoge kwaliteit bekijken, retro-gaming en platen verzamelen.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren