De fleste Linux -brukere er ofte uvitende om operativsystemet internt. Du kjører kanskje Linux -kommandoer på skallet lenge, men har du noen gang lurt på hva som skjer bak kulissene når du treffer Tast inn?
På slutten vil du ha en kort forståelse av hvordan skallet behandler den skrevne kommandoen i Linux.
Behandler kommandoen
Når du skriver inn en kommando, er det første skallet gjør å bryte hele kommandoen i "tokens". Skallet vil deretter lete etter et programnavn som tilhører det første tokenet i kommandolinjen.
Hvis den ikke finner den i noen av katalogene i søkebanen som er definert i $ PATH -miljøvariabelen eller i den lokale katalogen med .\ operatør, eller det er ikke en skallalias eller skallfunksjon, vil skallet gi en feil. Hvis den finner en gyldig kommando, vil skallet deretter gå gjennom hver av de andre tokensene og avgjøre om det er en variabel, en skallparameter eller et argument til kommandoen.
Hvis skallet bestemmer at det er en variabel eller en parameter som ~ operatør for hjemmekatalogen, vil skallet utvide dem, eller erstatte dem med de opprinnelige verdiene i kommandoen.
Når skallet har utvidet eventuelle parametere eller variabler, vil det passere langs kommandostrengen til kommandoen og kjøre programmet med sine argumenter. Skallet avgjør ikke om noen argumenter er gyldige. Det er kommandoen sin jobb.
Kjører kommandoen
Når skallet lanserer en annen kommando, hvordan kommer det tilbake til den samme ledeteksten du brukte før? Skallet lager en kopi av seg selv, en prosess som kalles gafling. Denne kopien av skallet erstatter seg selv med kommandoen, med alle argumentene som ble behandlet tidligere. Dette er kjent som en "exec", og den kombinerte prosessen er kjent som "fork-and-exec."
For eksempel når du løper kommandoen ls, skal skallprosessen gaffle seg selv med gaffel() metode og opprett en annen shell -forekomst. Av de to skallprosessene som kjører på systemet, vil det ekstra skallet utføre ls ved hjelp av exec () funksjon, og forvandler seg til en forekomst av ls -kommandoen.
I mellomtiden venter det originale skallet på at kommandoen skal fullføres. Dette er grunnen til at du kan bruke jobbkontroll til å suspendere jobber og få jobber kjørt i bakgrunnen i skallet.
I slekt: Hva er en prosess i Linux?
Rapportering av utgangsstatus
Linux -kommandoer rapporterer om de kjørte vellykket eller ikke gjennom utgangsstatusen. Som navnet antyder, rapporterer programmer om utgangsstatus når de er ferdig med å kjøre. De gjør dette gjennom $? miljøvariabel, som inneholder utgangsstatusen for den siste kjøringskommandoen.
Etter konvensjon indikerer en exit -status på 0 en vellykket gjennomføring, mens alt annet enn 0 vanligvis betyr en feil. Skallet ditt kan også indikere en ikke-null utgangsstatus på kommandolinjen, avhengig av hvordan spørringen din er konfigurert.
Skjermbildet ovenfor er et eksempel som viser en tilpasset Zsh -melding som viser en feilutgangsstatus på 127 på grunn av en kommando som ikke eksisterer.
Nå vet du hvordan Linux -kommandoer fungerer
Nå som du er klar over hvordan Linux -skallet behandler en kommando, gafler og utfører seg selv, og hvordan programmer rapporterer utgangsstatus, kan du bruke kommandolinjen mer effektivt.
Flere Linux -skall er gratis tilgjengelig for brukerne. Selv om hver av dem utfører mer eller mindre den samme jobben, er de forskjellige på mange aspekter. Du kan prøve å installere noen av skjellene på systemet ditt og selv bestemme hvilken som passer deg best.
Leter du etter et Linux bash shell -alternativ? Her er en oversikt over hvilket Linux -skall som er best: tsch, fish, KornShell og Z Shell.
Les neste
- Linux
- Linux -kommandoer
- Linux Bash Shell
David er en frilansskribent med base i det nordvestlige Stillehavet, men opprinnelig fra Bay Area. Han har vært en teknologientusiast siden barndommen. Davids interesser inkluderer å lese, se kvalitets -TV -programmer og filmer, retrospill og platesamling.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!
Klikk her for å abonnere