Kako PATH radi u Bashu

How Does Path Work Bash



Kada upisujete naredbu u Linux terminalu, općenito pozivate program da obavi određeni posao, na primjer, ls , CD , rm , mkdir itd. Svi se ti programi nalaze negdje u datotečnom sustavu, zar ne? Kako bash zna gdje su ti programi?

Ovdje dolaze u obzir varijable okruženja, osobito varijabla PATH. Ova je varijabla odgovorna za bash gdje tražiti te programe. Provjerimo kako PATH radi i kako pregledati/izmijeniti PATH.







Varijabla okruženja i $ PATH

Prema terminologiji ljuske, okruženje je područje koje ljuska gradi svaki put kada započne sesiju. Za upravljanje okolišem postoje varijable okruženja koje označavaju različite dijelove okruženja. Vrijednost varijable može biti niz, mjesto direktorija, vrijednost ili drugo.



PATH je takva varijabla okruženja koja prati određene direktorije. Prema zadanim postavkama, varijabla PATH sadrži sljedeće lokacije.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /am
  • /sbin
  • /snap/bin (ako je Snap instaliran)

Želite li vidjeti koji su direktoriji trenutno registrirani pod PATH? Pokrenite terminal i pokrenite sljedeću naredbu.





$izbaciti $ PATH

Ovdje znak $ označava varijablu. The izbaciti naredba ispisuje vrijednost varijable PATH.



Zašto je ta specifična varijabla okruženja toliko važna? To je zato što se prema njoj ponaša ljuska i sustav u cjelini. Varijabla PATH sprema gdje se mogu pronaći izvršne datoteke. Kad god se pokrene bilo koja naredba, ljuska traži direktorije PATH za ciljanu izvršnu datoteku i pokreće je.

Na primjer, testirajmo s izbaciti naredba. Ovdje pokrećem naredbu echo.

$izbacitiPozdrav svijete!

Gdje se nalazi izvršna datoteka izbaciti ? Pokrenite sljedeću naredbu da biste saznali.

$koji izbaciti

Kao što vidimo, izbaciti izvršna datoteka nalazi se na/usr/bin/echo. Gdje se koji nalazi? Hajde da vidimo.

$koji koji

Također se nalazi na adresi/usr/bin/which. Većina naredbenih alata nalazi se u direktoriju /usr /bin. Ovdje bash konzultira PATH za lokacije za traženje izvršnih komandi.

Modificiranje PATH

Prije nego promijenimo vrijednost PATH -a, važno je razumjeti njegovu strukturu. Ponovno pokrenite naredbu da provjerite vrijednost PATH.

$izbaciti $ PATH

Uočite da je svaki od direktorija odvojen znakom:.

Dodavanje direktorija u PATH

Da bismo dodali prilagođeni direktorij u PATH, koristit ćemo datoteku bashrc. To je posebna bash skripta koja se bash učitava svaki put kada započne nova bash sesija. Imajte na umu da je bashrc datoteka jedinstvena za svakog korisnika u Linux sustavu.

Otvorite bashrc datoteku u uređivaču teksta. Ako bashrc datoteka već nije prisutna, urednik će je automatski stvoriti.

$došao sam~/.bashrc

Ovdje je zadani bashrc koji dolazi s Ubuntuom. Idite na posljednju datoteku (ako postoji) i dodajte sljedeći redak.

$izvoz STAZA='$ PATH: / '

Ovdje će nova vrijednost varijable PATH biti stara varijabla zajedno s novim direktorijem koji smo upravo dodali.

Spremite datoteku i recite bashu da je ponovno učita.

$izvor~/.bashrc

Provjerimo je li novi put uspješno dodan.

$izbaciti $ PATH

Voila! PATH je uspješno ažuriran! Sada će bash također tražiti izvršne datoteke na novom putu. Već imam scenarij demo.sh na radnoj površini. Pogledajmo može li ga bash nazvati bez navođenja točne lokacije.

$demo.sh

Da, bash to može izravno nazvati bez ikakvih problema.

Uklanjanje direktorija s PATH

Ne postoji jednostavan način dodavanja/uklanjanja direktorija s PATH -a. Dopustite mi da objasnim.

Vrijednost PATH je zapravo fiksna. Što je s bashrc trikom? Bashrc je bash skripta koja se bash učitava svaki put kada započne sesiju. U bashrcu smo upravo izjavili da će nova vrijednost PATH biti njegova zadana vrijednost i korisnički definirani direktorij. Sada, svaki put kad se bash učita, vidi da bashrc govori da dodijeli novu vrijednost PATH i to je ono što radi.

Slično, ako želimo ukloniti direktorij iz PATH-a, moramo ponovno dodijeliti različitu vrijednost PATH-a u bashrcu tako da svaki put kad bash započne, koristi promijenjenu vrijednost.

Pogledajmo ovaj primjer. Voljan sam maknuti direktorij ~/Desktop sa PATH.

$izbaciti $ PATH | sed -I 's/: ~ /Desktop $ //'

Ako bi direktorij bio/home/wrong/dir, naredba bi izgledala ovako.

$izbaciti $ PATH | sed -I 's/: /home /krivo /dir $ //'

Ovdje je zanimljiv dio alat sed. Saznajte više o sed ovdje i ovdje . Ukratko, pomoću sed -a mijenjamo izlaz datoteke izbaciti naredba. Sada možemo koristiti ovaj izmijenjeni izlaz za promjenu vrijednosti PATH.

Otvorite bashrc u uređivaču teksta i dodajte sljedeće retke. Namjerno čuvam prethodne retke kako bih dokazao da radi.

$izvoz STAZA='$ (echo $ PATH | sed -e 's/: ~ /Desktop $ //')'

Alternativno, možete i ručno postaviti vrijednost PATH. To je mukotrpan proces, ali jednostavniji i jednostavniji.

$izvoz STAZA=/usr/lokalno/sbin:/usr/lokalno/ja sam:/usr/sbin:/usr/ja sam:/sbin:/ja sam:
/usr/igre:/usr/lokalno/igre:/pucnuti/am

Ovdje će vrijednost naredbe biti dodijeljena PATH. Spremite datoteku i ponovno učitajte bashrc.

$izvor~/.bashrc

Provjerimo rezultat.

$izbaciti $ PATH

Vrijednost PATH je ažurirana!

Završne misli

U bashu je varijabla PATH važna. Svaki program koji radi kroz bash sesiju nasljeđuje varijablu, pa je važno da PATH uključuje samo potrebne direktorije. Dodavanjem više direktorija sustav će se dodati samo višak.

Da biste vidjeli sve varijable okruženja za bash, pokrenite ovu naredbu. Prvi dio naredbe vratit će sve varijable okruženja, a drugi će dio sortirati izlaz u rastućem redoslijedu.

$env | vrsta

Želite li začiniti svoje bash iskustvo? Bash pseudonimi nude jedinstven način ubrzanja i začinjavanja stvari. Saznajte više o bash aliasima .

Uživati!