Ako funguje PATH v bashe

How Does Path Work Bash



Keď píšete príkaz na termináli Linux, spravidla voláte program na vykonanie určitej úlohy, napríklad ls , CD , rm , mkdir atď. Všetky tieto programy sú umiestnené niekde v súborovom systéme, nie? Ako bash vie, kde sú tieto programy?

Tu vstupujú do hry premenné prostredia, najmä premenná PATH. Táto premenná je zodpovedná za to, že povie bashu, kde hľadať tieto programy. Pozrime sa, ako PATH funguje a ako si PATH zobraziť/upraviť.







Premenná prostredia a $ PATH

V terminológii shellu je prostredie oblasť, ktorú shell vytvára pri každom spustení relácie. Na správu prostredia existujú premenné prostredia, ktoré označujú rôzne časti prostredia. Hodnota premennej môže byť reťazec, umiestnenie adresára, hodnota alebo iné.



PATH je taká premenná prostredia, ktorá sleduje určité adresáre. Premenná PATH štandardne obsahuje nasledujúce umiestnenia.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /dop
  • /sbin
  • /snap/bin (ak je nainštalovaný Snap)

Chcete vidieť, aké adresáre sú v súčasnosti zaregistrované pod PATH? Spustite terminál a spustite nasledujúci príkaz.





$zahodil $ PATH

Tu znak $ znamená premennú. The zahodil príkaz vytlačí hodnotu premennej PATH.



Prečo je táto špecifická premenná prostredia taká dôležitá? Je to preto, ako sa k tomu stavia shell a systém ako celok. Premenná PATH obsahuje miesta, kde sa dajú nájsť spustiteľné súbory. Kedykoľvek je spustený akýkoľvek príkaz, shell vyhľadá adresáre PATH pre cieľový spustiteľný súbor a spustí ho.

Skúste napríklad s zahodil príkaz. Tu spustím príkaz echo.

$zahodilAhoj Svet!

Kde je spustiteľný súbor zahodil ? Ak to chcete zistiť, spustite nasledujúci príkaz.

$ktoré zahodil

Ako vidíme, zahodil spustiteľný súbor sa nachádza na adrese/usr/bin/echo. Kde sa nachádza Poďme zistiť.

$ktoré ktoré

Nachádza sa tiež na/usr/bin/which. Väčšina príkazových nástrojov je umiestnená v adresári /usr /bin. Tu bash konzultuje PATH s umiestneniami, ktoré majú hľadať spustiteľné súbory príkazu.

Úprava PATH

Pred úpravou hodnoty PATH je dôležité porozumieť jej štruktúre. Znova spustite príkaz a skontrolujte hodnotu PATH.

$zahodil $ PATH

Všimnite si, že každý z adresárov je oddelený znamienkom:.

Pridávanie adresára do PATH

Ak chcete do PATH pridať vlastný adresár, použijeme pomoc súboru bashrc. Je to špeciálny bash skript, ktorý sa bash načítava vždy, keď sa spustí nová relácia bash. Všimnite si toho, že súbor bashrc je jedinečný pre každého používateľa v systéme Linux.

Otvorte súbor bashrc v textovom editore. Ak súbor bashrc ešte nie je k dispozícii, editor ho vytvorí automaticky.

$Prišiel som~/.bashrc

Tu je predvolený bashrc, ktorý sa dodáva s Ubuntu. Prejdite na posledný súbor (ak existuje) a pridajte nasledujúci riadok.

$export PATH='$ PATH: / '

Tu bude novou hodnotou premennej PATH stará premenná spolu s novým adresárom, ktorý sme práve pridali.

Uložte súbor a povedzte bashovi, aby ho znova načítal.

$zdroj~/.bashrc

Overíme, či bola nová cesta úspešne pridaná.

$zahodil $ PATH

Voila! PATH bola úspešne aktualizovaná! Teraz bude bash tiež hľadať novú cestu pre spustiteľné súbory. Už mám scenár demo.sh na ploche. Pozrime sa, či to bash môže nazvať bez uvedenia presného umiestnenia.

$demo.sh

Áno, bash to môže bez problémov priamo nazvať.

Odstraňuje sa adresár z PATH

Neexistuje žiadny priamy spôsob pridávania/odstraňovania adresárov z PATH. Nechaj ma vysvetliť.

Hodnota PATH je skutočne pevná. Čo potom s trikom bashrc? Bashrc je bash skript, ktorý sa načítava pri každom spustení relácie. V bashrc sme práve deklarovali, že novou hodnotou PATH bude jej predvolená hodnota a užívateľom definovaný adresár. Teraz, zakaždým, keď sa bash načíta, vidí, že bashrc hovorí, aby priradil novú hodnotu PATH a to je to, čo robí.

Podobne, ak chceme odstrániť adresár z PATH, musíme v bashrc znova priradiť inú hodnotu PATH, aby zakaždým, keď bash začne, použil upravenú hodnotu.

Pozrime sa na tento príklad. Som ochotný odstrániť adresár ~/Desktop z PATH.

$zahodil $ PATH | sed -A 's/: ~ /Desktop $ //'

Ak by bol adresár/home/false/dir, príkaz by vyzeral takto.

$zahodil $ PATH | sed -A 's/: /domov /zle /dir $ //'

Tu je zaujímavou časťou nástroj sed. Zistite viac o sed tu a tu . Stručne povedané, pomocou sed upravujeme výstup súboru zahodil príkaz. Teraz môžeme tento upravený výstup použiť na zmenu hodnoty PATH.

Otvorte bashrc v textovom editore a pridajte nasledujúce riadky. Zámerne ponechávam predchádzajúce riadky, aby som dokázal, že funguje.

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

Alternatívne môžete hodnotu PATH nastaviť aj ručne. Je to namáhavý proces, ale priamočiarejší a jednoduchší.

$export PATH=/usr/miestny/sbin:/usr/miestny/som:/usr/sbin:/usr/som:/sbin:/som:
/usr/hry:/usr/miestny/hry:/zacvaknúť/dopoludnia

Tu bude hodnota príkazu priradená PATH. Uložte súbor a znova načítajte bashrc.

$zdroj~/.bashrc

Poďme si overiť výsledok.

$zahodil $ PATH

Hodnota PATH je aktualizovaná!

Záverečné myšlienky

V bash je premenná PATH dôležitá. Každý program, ktorý beží cez reláciu bash, dedí premennú, takže je dôležité, aby PATH obsahoval iba potrebné adresáre. Pridaním ďalšieho adresára sa do systému pridá iba nadbytočnosť.

Ak chcete zobraziť všetky premenné prostredia pre bash, spustite tento príkaz. Prvá časť príkazu vráti všetky premenné prostredia a druhá časť zoradí výstup vzostupne.

$env | triediť

Chcete okoreniť svoj bash zážitok? Bash aliasy ponúkajú jedinečný spôsob, ako veci urýchliť a okoreniť. Získajte viac informácií o aliasoch bash .

Užite si to!