Hur fungerar PATH i Bash

How Does Path Work Bash



När du skriver ett kommando i Linux -terminalen ringer du i allmänhet ett program för att göra ett visst jobb, till exempel ls , CD , rm , mkdir , etc. Alla dessa program finns någonstans i filsystemet, eller hur? Hur vet bash var dessa program finns?

Här kommer miljövariablerna till spel, särskilt PATH -variabeln. Denna variabel är ansvarig för att berätta var man ska leta efter dessa program. Låt oss kolla hur PATH fungerar och hur du visar/ändrar PATH.







Miljövariabel och $ PATH

I skalterminologin är miljön ett område som skalet bygger varje gång det startar en session. För att hantera miljön finns det miljövariabler som betecknar olika delar av miljön. Värdet på variabeln kan vara sträng, katalogplats, värde eller andra.



PATH är en sådan miljövariabel som håller reda på vissa kataloger. Som standard innehåller PATH -variabeln följande platser.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /am
  • /sbin
  • /snap/bin (om Snap är installerat)

Vill du se vilka kataloger som för närvarande är registrerade under PATH? Slå på en terminal och kör följande kommando.





$kastade ut $ STIG

Här är $ -tecknet att beteckna en variabel. De kastade ut kommandot skriver ut värdet på PATH -variabeln.



Varför är denna specifika miljövariabel så viktig? Det beror på hur skalet och systemet som helhet behandlar det. Variabeln PATH lagrar där körbara filer kan hittas. Närhelst något kommando körs letar skalet upp PATH -katalogerna efter den målkörbara filen och kör den.

Låt oss till exempel testa med kastade ut kommando. Här kör jag ett ekokommando.

$kastade utHej världen!

Var är den körbara filen kastade ut ? Kör nästa kommando för att ta reda på det.

$som kastade ut

Som vi kan se, kastade ut körbar finns på/usr/bin/echo. Var ligger vilken? Låt oss ta reda på.

$som som

Det finns också på/usr/bin/which. De flesta kommandoverktygen finns under katalogen /usr /bin. Här konsulterar bash PATH för platserna för att söka efter körbara (er) för ett kommando.

Ändra PATH

Innan vi ändrar värdet på PATH är det viktigt att förstå dess struktur. Kör kommandot igen för att kontrollera värdet på PATH.

$kastade ut $ STIG

Lägg märke till att var och en av katalogerna är åtskilda med ett: -tecken.

Lägger till katalog till PATH

För att lägga till en anpassad katalog till PATH tar vi hjälp av bashrc -filen. Det är ett speciellt bash -skript som bash laddas varje gång en ny bash -session startar. Observera att bashrc -filen är unik för varenda användare i Linux -systemet.

Öppna bashrc -filen i en textredigerare. Om bashrc -filen inte redan finns, skapar redigeraren den automatiskt.

$jag kom~/.bashrc

Här är det standard bashrc som följer med Ubuntu. Gå till den sista av filen (om den finns) och lägg till följande rad.

$exportera VÄG='$ STIG: / '

Här kommer det nya värdet för PATH -variabeln att vara den gamla variabeln tillsammans med den nya katalogen vi just lagt till.

Spara filen och berätta för bash att ladda om den.

$källa~/.bashrc

Låt oss verifiera om den nya sökvägen har lagts till.

$kastade ut $ STIG

Voila! PATH uppdaterades framgångsrikt! Nu kommer bash också att söka den nya sökvägen efter körbara filer. Jag har redan ett manus demo.sh på skrivbordet. Låt oss se om bash kan kalla det utan att ange den exakta platsen.

$demo.sh

Japp, bash kan direkt kalla det utan problem.

Ta bort katalogen från PATH

Det finns inget enkelt sätt att lägga till/ta bort kataloger från PATH. Låt mig förklara.

Värdet på PATH är faktiskt fast. Hur är det då med bashrc -tricket? Bashrc är ett bash -skript som bash laddas varje gång det startar en session. I bashrc deklarerade vi precis att det nya värdet för PATH kommer att vara dess standardvärde och den användardefinierade katalogen. Nu, varje gång bash laddas, ser det att bashrc säger till att tilldela ett nytt värde för PATH och det är vad det gör.

På samma sätt, om vi vill ta bort en katalog från PATH, måste vi tilldela ett annat värde för PATH i bashrc så att varje gång bash startar använder det det modifierade värdet.

Låt oss titta på detta exempel. Jag är villig att ta bort katalogen ~/Desktop från PATH.

$kastade ut $ STIG | sed -Och 's/: ~ /Desktop $ //'

Om katalogen skulle vara/home/wrong/dir skulle kommandot se ut så här.

$kastade ut $ STIG | sed -Och 's/: /home /wrong /dir $ //'

Här är den intressanta delen sed -verktyget. Läs mer om sed här och här . Lång historia kort, med sed, ändrar vi produktionen av kastade ut kommando. Nu kan vi använda denna modifierade utdata för att ändra värdet på PATH.

Öppna bashrc i en textredigerare och lägg till följande rader. Jag behåller avsiktligt de tidigare raderna för att bevisa att det fungerar.

$exportera VÄG='$ (echo $ PATH | sed -e's/: ~ /Desktop $ // ')'

Alternativt kan du också manuellt ställa in värdet på PATH. Det är en ansträngande process men mer enkel och enkel.

$exportera VÄG=/usr/lokal/sbin:/usr/lokal/är:/usr/sbin:/usr/är:/sbin:/är:
/usr/spel:/usr/lokal/spel:/knäppa/am

Här kommer värdet på kommandot att tilldelas PATH. Spara filen och ladda om bashrc.

$källa~/.bashrc

Låt oss verifiera resultatet.

$kastade ut $ STIG

PATH -värdet uppdateras!

Slutgiltiga tankar

I bash är PATH -variabeln en viktig. Alla program som körs genom bash -sessionen ärver variabeln, så det är viktigt att PATH bara innehåller de nödvändiga katalogerna. Att lägga till fler kataloger kommer bara att lägga till redundans i systemet.

För att se alla miljövariabler för bash, kör det här kommandot. Den första kommandodelen returnerar alla miljövariabler och den andra delen sorterar utdata i stigande ordning.

$env | sortera

Vill du krydda din bash -upplevelse? Bash -alias erbjuder ett unikt sätt att påskynda och krydda saker. Läs mer om bash -alias .

Njut av!