Linux Shell -grensesnitt til Linux -kjernen

Linux Shell -grensesnitt til Linux -kjernen
Vi vil gå gjennom Linux Shell, en kommandotolk for Linux. Shell gir et miljø der få C -kjørbare programmer er til stede på spesifikke kjente baner. Shell lokaliserer disse kjørbare filer og gir utgangen fra disse kommandoene til konsollen. Vi vil diskutere noen få eksempler på kommandoer og miljøvariablene i skallet.

Beskrivelse:

Shell gir et miljø til brukeren der brukeren kan utføre flere kjørbare programmer og utdataene fra disse programmene vises på skjermen. I utgangspunktet er arbeidsfilosofien til skallet at den kontinuerlig venter på at brukeren skal legge inn strengen. Deretter blir denne strengen søkt og matchet med de kjente kjørbare programmene som er til stede i skallmiljøet. Hvis det matchede, kjørbare programmet blir funnet, lanseres den kjørbare etter å ha opprettet en barneprosess. Denne nyopprettede barneprosessen utfører programmet. Utgangen fra programmet blir overlevert til overordnede prosess som er skall. Shell skriver ut utgangen til konsollen hvis utgangen ikke blir omdirigert. Plasseringene der skallet søker etter de kjørbare programmene er til stede i miljøvariabelen, "bane". Stivariabel holder “:” atskilt i flere baner der Shell søker etter de kjørbare programmene.

Blokkdiagrammet for skallet er vist i følgende:

Fra det medfølgende blokkdiagrammet kan vi konkludere med at vi trenger et skall for å utføre alle C -kjørbare i Linux -miljøet. Uten skallet er det ikke mulig å utføre C -programmet dynamisk. Det er noen forhåndsdefinerte kjørbare programmer som er kjent som Shell -kommandoene. Noen eksempler på skallkommandoene er ls, ps osv.

La oss diskutere skallkommandoene. Det er to typer skallkommandoer:

a) Innebygde kommandoer

Dette er kommandoene som er den delen av selve skallet. Mens du utfører disse kommandoene, gaffler ikke Shell. Disse kommandoene blir utført som en del av skallet selv. For å oppdatere i disse kommandoene, trenger vi en oppdatering i selve skallet. Disse kommandoene er bundet med skallet.

Noen eksempler på de innebygde kommandoene er CD, Echo, Kill, Break, Alias, BG, etc. Vi kan bruke “Hjelp” -kommandoen for å se hele listen over innebygde kommandoer.

b) eksterne kommandoer

Disse kommandoene er de separate C -programmets kjørbare filer. Disse er ikke en del av skallet. Dette er steder på en bestemt sti. Shell ser ut på disse stiene, utfører programmene og viser utdataene. Det er enkelt å legge en ny kommando på listen over kjente kommandoer; Bare kopier et nytt kjørbart program/kommando til den kjente banen. Generelt er disse kommandoene plassert i banen som /usr /bin, /usr /sbin, etc. Alle stedene er spesifisert i banen.

I systemet mitt kan den kjente veien til skallet som er Echo -kommandoen, sjekkes for å få den komplette listen over banen:

Ubuntu@srathore: $ ekko $ sti
/Hjem/CienAuser/.Lokal/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Hvis vi ønsker å introdusere en ny vei til denne listen, kan vi oppdatere verdiene til banemiljøvariablene. Kommandoen "Eksport" kan brukes til å oppdatere banen med de nye verdiene.

Ved hjelp av “Type” -kommandoen kan vi få at enhver kommando er innebygd eller ekstern. La oss forstå bruken av "type". Å utføre typen med “CD” gir følgende utgang:

Ubuntu@srathore: ~/$ type cd
CD er et skallbygd
Ubuntu@srathore: ~/$

Utgangen fra den forrige kommandoen er selvforklarende.

La oss nå prøve “Type” -kommandoen med LSPCI -kommandoen:

Ubuntu@srathore: ~/$ type lspci
LSPCI er/usr/bin/lspci
Ubuntu@srathore: ~/$

Siden utgangen viser banen til den kjørbare, kan vi konkludere med at dette er en ekstern kommando.

Miljøvariabler

Det er få miljøvariabler som er definert for skallet. Til nå forsto vi banen variabel. Sti er en miljøvariabel som gir listen over sti som skal søkes etter eksterne kommandoer. Den komplette listen over miljøvariabler kan sjekkes ved hjelp av env -kommandoen. Env -kommandoen gir den komplette listen over miljøvariabler.

Noen få eksempler for miljøvariablene i skallet er:

  • Sti: Listen over stier for eksterne kommandoer.
  • Shell: Type skall som for tiden er aktiv.
  • Oldpwd: den siste arbeidskatalogen.
  • PWD: refererer til den nåværende arbeidskatalogen.
  • Bruker: Brukernavnet for det aktive skallet.
  • Hjem: Hjemmekatalogen for brukeren.

Det er mange flere. Som diskutert tidligere, kan den komplette listen sjekkes med Env -kommandoen.

Endring av miljøvariablene

De nødvendige verdiene kan tilordnes direkte til variabelen, da Shell lar oss bruke oppdragsoperatøren. Gjeldende verdi av en hvilken som helst skallvariabel kan sees ved hjelp av Echo -kommandoen. For eksempel, hvis vi vil sjekke verdien på banen. Å utføre følgende kommando skal kunne gjøre det:

Ekko $ bane

Bruke $ operatøren før variabelen inne i skallet skriver ut verdien av variabelen. Dette er tilbudet av Echo -kommandoen. Tilsvarende kan ekko brukes til å skrive ut hvilken som helst miljøvariabel.

Hvis vi ønsker å oppdatere banevariabelen, vil vi oppdatere den tilpassede banen som /usr /cutom som vi ønsker å legge til banen. Vi plasserer kuttekommandoene våre på denne veien. For at skallet skal utføre disse kommandoene, må verdien oppdateres i banen. Uten å oppdatere banen hvis vi utfører disse tilpassede programmene, får vi feilen som sier: "Ingen slik fil eller katalog". Denne feilen sier tydelig at skallet ikke er i stand til å finne kommandoene.

Som et eksperiment prutter vi vår tilpassede kommando, MYLS og Myps, i/Home/Srathore/Custom. Når vi utfører MYLS eller Myps fra /Home /Srathore, har vi følgende melding fra skallet:

srathore@srathore: ~ $ myLS
Kommando 'myLS' ikke funnet, mente du:
Kommando 'Tyls' fra Deb Terminology
Kommando 'MMLS' fra Deb Sleuthkit
Prøv: sudo apt installasjon
Srathore@Srathore: ~ $ Myps
Kommando 'myps' ikke funnet, mente du:
Kommando 'Mypy' fra Deb Mypy
Prøv: sudo apt installasjon
srathore@srathore: ~ $

De tidligere meldingene viser at disse kommandoene ikke er funnet, og at et forslag er gitt av OS om å installere disse kommandoene.

La oss nå legge den nye tilpassede banen til den eksisterende banen som følger:

srathore@srathore: ~ $ ekko $ bane
/Hjem/CienAuser/.Lokal/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Srathore@Srathore: ~ $ Eksportbane = $ Sti:/Hjem/Srathore/Custom
srathore@srathore: ~ $ ekko $ bane
/Hjem/CienAuser/.Lokal/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/srathore/custom
srathore@srathore: ~ $

Vår nylig tilførte bane er fremhevet med fet skrift. Vi kan se at banemiljøvariabelen er oppdatert med den nye verdien.

La oss nå prøve igjen å utføre kommandoene som er til stede i vår tilpassede vei. Ved å utføre “Myps” og “MYLS”, har vi følgende utgang:

Srathore@Srathore: ~ $ Myps
Pid tty tid cmd
2112 PTS/0 00:00:00 BASH
2783 PTS/0 00:00:00 MYPS
srathore@srathore: ~ $ myLS
en.ut pakkinstallert spd_tool build_root_fs kjerne_artikler lapper stime
coreboot kernel_ubuntu pcie_transfer_app stime.c
BASH_ARM CUSTICT LMSENSORS REDFISHTOOL TELNET_SCRIPTS NVM_CLI
OpenSsh Snap
srathore@srathore: ~ $

De tidligere logger viser at begge kommandoene fungerte perfekt. Vi hadde ingen feil som vi observerte før vi oppdaterte banevariabelen. Vi diskuterte den viktigste skallvariabelen, som vi vanligvis endrer i vårt daglige utviklingsarbeid. Hvis vi installerer en ny pakke, oppdateres denne variabelen slik at de nye verktøykommandoene enkelt kan plasseres av skallet.

Konklusjon

Vi diskuterte definisjonen av skall. Vi har også sett filosofien bak skallimplementeringen av de forskjellige kommandoene levert av Shell og miljøvariablene til skallet. Vi har også gått gjennom få miljøvariabler. Viktigst av alt, vi diskuterte om banen variabel. Vi har også sett måten å oppdatere banen og viktigheten av variabelen som demonstreres av et eksempel på. Vi lærte viktigheten av Shell og tilbudet.