Hvordan fungerer PATH i Bash

How Does Path Work Bash



Når du skriver en kommando i Linux -terminalen, ringer du vanligvis et program for å gjøre en bestemt jobb, for eksempel ls , CD , rm , mkdir osv. Alle disse programmene er plassert et sted i filsystemet, ikke sant? Hvordan vet bash hvor disse programmene er?

Her kommer miljøvariablene i spill, spesielt PATH -variabelen. Denne variabelen er ansvarlig for å fortelle bash hvor de skal lete etter disse programmene. La oss sjekke hvordan PATH fungerer og hvordan du ser/endrer PATH.







Miljøvariabel og $ PATH

I skallterminologien er miljøet et område som skallet bygger hver gang det starter en økt. For å håndtere miljøet er det miljøvariabler som angir forskjellige deler av miljøet. Verdien av variabelen kan være streng, katalogplassering, verdi eller andre.



PATH er en slik miljøvariabel som holder oversikt over visse kataloger. Som standard inneholder PATH -variabelen følgende steder.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /er
  • /sbin
  • /snap/bin (hvis Snap er installert)

Vil du se hvilke kataloger som for øyeblikket er registrert under PATH? Slå av en terminal og kjør følgende kommando.





$kastet ut $ STI

Her er $ -tegnet å betegne en variabel. De kastet ut kommandoen skriver ut verdien av PATH -variabelen.



Hvorfor er denne spesifikke miljøvariabelen så viktig? Det er fordi hvordan shell og systemet som helhet behandler det. PATH -variabelen lagrer hvor kjørbare filer kan bli funnet. Når en kommando kjøres, ser skallet opp i PATH -katalogene for den kjørbare filen og kjører den.

La oss for eksempel teste med kastet ut kommando. Her kjører jeg en ekkokommando.

$kastet utHei Verden!

Hvor er den kjørbare filen kastet ut ? Kjør den neste kommandoen for å finne ut.

$hvilken kastet ut

Som vi kan se, kastet ut kjørbar ligger på/usr/bin/echo. Hvor ligger hvilken? La oss finne det ut.

$hvilken hvilken

Det ligger også på/usr/bin/which. De fleste kommandoverktøyene er plassert under katalogen /usr /bin. Her konsulterer bash PATH for stedene for å søke etter kjørbare (r) til en kommando.

Endre banen

Før vi endrer verdien av PATH, er det viktig å forstå strukturen. Kjør kommandoen igjen for å kontrollere verdien av PATH.

$kastet ut $ STI

Legg merke til at hver av katalogene er atskilt med et: -tegn.

Legger til katalog til PATH

For å legge til en tilpasset katalog til PATH, tar vi hjelp av bashrc -filen. Det er et spesielt bash -skript som bash lastes inn hver gang en ny bash -økt starter. Vær oppmerksom på at bashrc -filen er unik for hver enkelt bruker i Linux -systemet.

Åpne bashrc -filen i et tekstredigeringsprogram. Hvis bashrc -filen ikke allerede er tilstede, vil redaktøren opprette den automatisk.

$jeg kom~/.bashrc

Her er det standard bashrc som følger med Ubuntu. Gå til den siste av filen (hvis den finnes) og legg til følgende linje.

$eksport STI='$ STI: / '

Her vil den nye verdien av PATH -variabelen være den gamle variabelen sammen med den nye katalogen vi nettopp la til.

Lagre filen og si til bash om å laste den inn på nytt.

$kilde~/.bashrc

La oss bekrefte om den nye banen ble lagt til.

$kastet ut $ STI

Voila! STIEN er oppdatert! Nå vil bash også søke i den nye banen etter kjørbare (r). Jeg har allerede et manus demo.sh på skrivebordet. La oss se om bash kan kalle det uten å spesifisere den nøyaktige plasseringen.

$demo.sh

Jepp, bash kan direkte kalle det uten problemer.

Fjerner katalogen fra PATH

Det er ingen enkel måte å legge til/fjerne kataloger fra PATH. La meg forklare.

Verdien av PATH er faktisk fast. Så, hva med bashrc -trikset? Bashrc er et bash -skript som bash lastes inn hver gang det starter en økt. I bashrc erklærte vi nettopp at den nye verdien til PATH vil være standardverdien og den brukerdefinerte katalogen. Nå, hver gang bash lastes inn, ser den at bashrc forteller å tildele en ny verdi av PATH, og det er det den gjør.

På samme måte, hvis vi vil fjerne en katalog fra PATH, må vi tildele en annen verdi for PATH i bashrc slik at hver gang bash starter, bruker den den endrede verdien.

La oss se på dette eksemplet. Jeg er villig til å fjerne katalogen ~/Desktop fra banen.

$kastet ut $ STI | sed -Og 's/: ~ /Desktop $ //'

Hvis katalogen ville være/home/wrong/dir, ville kommandoen se slik ut.

$kastet ut $ STI | sed -Og 's/: /home /wrong /dir $ //'

Her er den interessante delen det sed verktøyet. Lær mer om sed her og her . Lang historie kort, ved å bruke sed, endrer vi utdataene fra kastet ut kommando. Nå kan vi bruke denne modifiserte utgangen til å endre verdien av PATH.

Åpne bashrc i et tekstredigeringsprogram, og legg til følgende linjer. Jeg beholder med vilje de forrige linjene for å bevise at det fungerer.

$eksport STI='$ (ekko $ PATH | sed -e 's/: ~ /Desktop $ //')'

Alternativt kan du også angi verdien for PATH manuelt. Det er en arbeidsprosess, men mer grei og enkel.

$eksport STI=/usr/lokal/sbin:/usr/lokal/er:/usr/sbin:/usr/er:/sbin:/er:
/usr/spill:/usr/lokal/spill:/snap/er

Her vil verdien av kommandoen bli tilordnet PATH. Lagre filen og last inn bashrc på nytt.

$kilde~/.bashrc

La oss bekrefte resultatet.

$kastet ut $ STI

PATH -verdien er oppdatert!

Siste tanker

I bash er PATH -variabelen en viktig. Ethvert program som kjører gjennom bash -sesjonen arver variabelen, så det er viktig at PATH bare inneholder de nødvendige katalogene. Å legge til flere kataloger vil bare legge til redundans i systemet.

For å se alle miljøvariablene for bash, kjør denne kommandoen. Den første kommandodelen returnerer alle miljøvariablene, og den andre delen sorterer utgangen i stigende rekkefølge.

$env | sortere

Vil du krydre din bash -opplevelse? Bash -aliaser gir en unik måte å fremskynde og krydre ting på. Lær mer om bash -aliaser .

Nyt!