Kako PATH deluje v Bashu

How Does Path Work Bash



Ko vnesete ukaz v terminalu Linux, običajno kličete program za opravljanje določenega dela, na primer ls , CD , rm , mkdir itd. Vsi ti programi se nahajajo nekje v datotečnem sistemu, kajne? Kako bash ve, kje so ti programi?

Tu nastopijo spremenljivke okolja, zlasti spremenljivka PATH. Ta spremenljivka je odgovorna, da bash pove, kje naj te programe išče. Preverimo, kako deluje PATH in kako si ogledati/spremeniti PATH.







Spremenljivka okolja in $ PATH

V terminologiji lupine je okolje področje, ki ga lupina sestavi vsakič, ko začne sejo. Za upravljanje okolja obstajajo okoljske spremenljivke, ki označujejo različne dele okolja. Vrednost spremenljivke je lahko niz, lokacija imenika, vrednost ali drugo.



PATH je takšna spremenljivka okolja, ki sledi določenim imenikom. Spremenljivka PATH privzeto vsebuje naslednje lokacije.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /zjutraj
  • /sbin
  • /snap/bin (če je nameščen Snap)

Želite videti, kateri imeniki so trenutno registrirani pod PATH? Zaženite terminal in zaženite naslednji ukaz.





$vrgel ven $ PATH

Tu znak $ označuje spremenljivko. The vrgel ven ukaz natisne vrednost spremenljivke PATH.



Zakaj je ta specifična spremenljivka okolja tako pomembna? To je zato, ker to obravnava lupina in sistem kot celota. Spremenljivka PATH shranjuje izvršljive datoteke. Kadar koli se izvede kateri koli ukaz, lupina poišče imenike PATH za ciljno izvedljivo datoteko in jo zažene.

Na primer, preizkusimo z vrgel ven ukaz. Tukaj izvajam ukaz echo.

$vrgel venPozdravljen, svet!

Kje je izvršljiva datoteka vrgel ven ? Če želite izvedeti, zaženite naslednji ukaz.

$ki vrgel ven

Kot lahko vidimo, vrgel ven izvršljiva datoteka se nahaja na/usr/bin/echo. Kje se nahaja? Pa ugotovimo.

$ki ki

Prav tako se nahaja na/usr/bin/which. Večina ukaznih orodij se nahaja v imeniku /usr /bin. Tukaj bash posvetuje s PATH o lokacijah za iskanje izvedljivih datotek ukaza.

Spreminjanje poti

Preden spremenimo vrednost PATH, je pomembno razumeti njegovo strukturo. Znova zaženite ukaz, da preverite vrednost PATH.

$vrgel ven $ PATH

Upoštevajte, da je vsak imenik ločen z znakom:.

Dodajanje imenika PATH

Če želite PATH dodati imenik po meri, bomo uporabili datoteko bashrc. To je poseben bash skript, ki se bash naloži vsakič, ko se začne nova bash seja. Upoštevajte, da je datoteka bashrc edinstvena za vsakega posameznega uporabnika v sistemu Linux.

Odprite datoteko bashrc v urejevalniku besedil. Če datoteka bashrc še ni prisotna, jo bo urejevalnik ustvaril samodejno.

$Sem prišel~/.bashrc

Tukaj je privzeti bashrc, ki je priložen Ubuntu. Pojdite na zadnjo datoteko (če obstaja) in dodajte naslednjo vrstico.

$izvoz POT='$ PATH: / '

Tu bo nova vrednost spremenljivke PATH stara spremenljivka skupaj z novim imenikom, ki smo ga pravkar dodali.

Shranite datoteko in povejte bashu, naj jo znova naloži.

$vir~/.bashrc

Preverimo, ali je bila nova pot uspešno dodana.

$vrgel ven $ PATH

Voila! PATH je bil uspešno posodobljen! Zdaj bo bash po novi poti iskal tudi izvedljive datoteke. Scenarij že imam demo.sh na namizju. Poglejmo, ali ga lahko bash pokliče, ne da bi navedel natančno lokacijo.

$demo.sh

Ja, bash ga lahko brez problema direktno pokliče.

Odstranjevanje imenika s PATH

Ni enostavnega načina dodajanja/odstranjevanja imenikov iz PATH. Naj razložim.

Vrednost PATH je dejansko fiksna. Kaj pa z bashrc trikom? Bashrc je bash skript, ki se bash naloži vsakič, ko začne sejo. V bashrcu smo pravkar izjavili, da bo nova vrednost PATH privzeta vrednost in uporabniško določen imenik. Zdaj, ko se bash naloži, vidi, da bashrc govori, naj dodeli novo vrednost PATH, in to počne.

Podobno, če želimo odstraniti imenik iz PATH, moramo znova dodeliti drugačno vrednost PATH v bashrcu, tako da vsakič, ko se bash zažene, uporabi spremenjeno vrednost.

Poglejmo si ta primer. Pripravljen sem odstraniti imenik ~/Desktop s PATH.

$vrgel ven $ PATH | sed -In 's/: ~ /Namizje $ //'

Če bi bil imenik/home/wrong/dir, bi bil ukaz videti tako.

$vrgel ven $ PATH | sed -In 's/: /home /wrong /dir $ //'

Tu je zanimiv del orodje sed. Več o sed tukaj in tukaj . Na kratko povedano, z uporabo sed spreminjamo izhod datoteke vrgel ven ukaz. Zdaj lahko s tem spremenjenim izhodom spremenimo vrednost PATH.

Odprite bashrc v urejevalniku besedil in dodajte naslednje vrstice. Namerno ohranim prejšnje vrstice, da dokažem, da deluje.

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

Lahko pa tudi ročno nastavite vrednost PATH. To je delovni proces, vendar bolj preprost in enostaven.

$izvoz POT=/usr/lokalno/sbin:/usr/lokalno/sem:/usr/sbin:/usr/sem:/sbin:/sem:
/usr/igre:/usr/lokalno/igre:/snap/sem

Tu bo vrednost ukaza dodeljena PATH. Shranite datoteko in znova naložite bashrc.

$vir~/.bashrc

Preverimo rezultat.

$vrgel ven $ PATH

Vrednost PATH je posodobljena!

Končne misli

V bashu je spremenljivka PATH pomembna. Vsak program, ki teče skozi sejo bash, podeduje spremenljivko, zato je pomembno, da PATH vključuje samo potrebne imenike. Če dodate več imenikov, boste sistemu dodali le odvečnost.

Če si želite ogledati vse spremenljivke okolja za bash, zaženite ta ukaz. Prvi ukazni del vrne vse spremenljivke okolja, drugi del pa razvrsti izhod v naraščajočem vrstnem redu.

$env | razvrsti

Želite popestriti svojo bash izkušnjo? Bash vzdevki ponujajo edinstven način pospeševanja in začinjanja stvari. Več o vzdevkih bash .

Uživajte!