Kaip PATH veikia „Bash“

How Does Path Work Bash



Kai įvedate komandą „Linux“ terminale, paprastai skambinate programai atlikti tam tikrą darbą, pavyzdžiui, ls , CD , rm , mkdir ir tt Visos šios programos yra kažkur failų sistemoje, tiesa? Kaip bashas žino, kur yra šios programos?

Čia atsiranda aplinkos kintamieji, ypač kintamasis PATH. Šis kintamasis yra atsakingas už tai, kad bash nurodytų, kur tų programų ieškoti. Pažiūrėkime, kaip veikia PATH ir kaip peržiūrėti/modifikuoti PATH.







Aplinkos kintamasis ir $ PATH

Apvalkalo terminologijoje aplinka yra sritis, kurią apvalkalas sukuria kiekvieną kartą, kai prasideda sesija. Norėdami valdyti aplinką, yra aplinkos kintamųjų, žyminčių skirtingas aplinkos dalis. Kintamojo reikšmė gali būti eilutė, katalogo vieta, vertė ar kita.



PATH yra toks aplinkos kintamasis, kuris stebi tam tikrus katalogus. Pagal numatytuosius nustatymus PATH kintamajame yra šios vietos.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /esu
  • /sbin
  • /snap/bin (jei įdiegta „Snap“)

Norite pamatyti, kokie katalogai šiuo metu yra užregistruoti PATH? Įjunkite terminalą ir paleiskite šią komandą.





$išmetė $ PATH

Čia ženklas $ reiškia kintamąjį. The išmetė komanda spausdina kintamojo PATH vertę.



Kodėl šis konkretus aplinkos kintamasis yra toks svarbus? Taip yra todėl, kaip su juo elgiasi apvalkalas ir visa sistema. Kintamasis PATH saugo, kur galima rasti vykdomuosius failus. Vykdant bet kokią komandą, apvalkalas ieško tikslinio vykdomojo failo PATH katalogų ir jį paleidžia.

Pavyzdžiui, išbandykime su išmetė komandą. Čia aš vykdau aido komandą.

$išmetėLabas pasauli!

Kur yra vykdomasis failas išmetė ? Norėdami sužinoti, paleiskite kitą komandą.

$kuris išmetė

Kaip matome, išmetė vykdomasis failas yra/usr/bin/echo. Kur kuris įsikūręs? Išsiaiškinkime.

$kuris kuris

Jis taip pat yra adresu/usr/bin/which. Dauguma komandų įrankių yra kataloge /usr /bin. Čia „bash“ konsultuojasi su PATH dėl vietų, kuriose reikia ieškoti vykdomojo (-ųjų) komandos (-ų).

PATH modifikavimas

Prieš keisdami PATH vertę, svarbu suprasti jo struktūrą. Paleiskite komandą dar kartą, kad patikrintumėte PATH vertę.

$išmetė $ PATH

Atkreipkite dėmesį, kad kiekvienas katalogas yra atskirtas ženklu:.

Katalogas pridedamas prie PATH

Norėdami pridėti pasirinktinį katalogą prie PATH, mes pasinaudosime „bashrc“ failo pagalba. Tai specialus „bash“ scenarijus, kuris „bash“ įkeliamas kiekvieną kartą, kai prasideda nauja „bash“ sesija. Atminkite, kad „bashrc“ failas yra unikalus kiekvienam „Linux“ sistemos vartotojui.

Atidarykite „bashrc“ failą teksto rengyklėje. Jei „bashrc“ failo dar nėra, redaktorius jį sukurs automatiškai.

$aš atėjau~/.bashrc

Čia yra numatytasis „bashrc“, pateikiamas kartu su „Ubuntu“. Eikite į paskutinį failą (jei jis yra) ir pridėkite šią eilutę.

$eksportas PATH='$ PATH: / '

Čia nauja PATH kintamojo vertė bus senas kintamasis kartu su nauju katalogu, kurį ką tik pridėjome.

Išsaugokite failą ir liepkite „bash“ jį įkelti iš naujo.

$šaltinis~/.bashrc

Patikrinkime, ar naujas kelias buvo sėkmingai pridėtas.

$išmetė $ PATH

Voila! PATH sėkmingai atnaujintas! Dabar „bash“ taip pat ieškos vykdomojo failo (-ų) naujame kelyje. Aš jau turiu scenarijų demo.sh darbalaukyje. Pažiūrėkime, ar „bash“ gali jį paskambinti nenurodydamas tikslios vietos.

$demo.sh

Taip, „bash“ gali tai vadinti tiesiogiai be jokių problemų.

Pašalinamas katalogas iš PATH

Nėra paprasto būdo pridėti/pašalinti katalogus iš PATH. Leisk man paaiškinti.

PATH vertė iš tikrųjų yra fiksuota. O kaip dėl bashrc triuko? „Bashrc“ yra „bash“ scenarijus, kuris „bash“ įkeliamas kiekvieną kartą pradedant sesiją. „Bashrc“ ką tik paskelbėme, kad nauja PATH vertė bus numatytoji vertė ir vartotojo nustatytas katalogas. Dabar, kiekvieną kartą įkeliant „bash“, jis mato, kad „bashrc“ liepia priskirti naują PATH vertę ir tai daro.

Panašiai, jei norime pašalinti katalogą iš PATH, turime iš naujo priskirti skirtingą PATH vertę „bashrc“, kad kiekvieną kartą prasidėjus „bash“ jis naudotų pakeistą vertę.

Pažvelkime į šį pavyzdį. Aš noriu pašalinti katalogą ~/Desktop iš PATH.

$išmetė $ PATH | sed -Ir 's/: ~ /Desktop $ //'

Jei katalogas būtų/home/neteisingas/dir, komanda atrodytų taip.

$išmetė $ PATH | sed -Ir 's/: /home /neteisingas /dir $ //'

Čia įdomi dalis yra sed įrankis. Sužinokite daugiau apie sed čia ir čia . Trumpai tariant, naudodami sed, mes keičiame išmetė komandą. Dabar mes galime naudoti šią modifikuotą išvestį, kad pakeistume PATH vertę.

Teksto redaktoriuje atidarykite „bashrc“ ir pridėkite šias eilutes. Aš tyčia laikausi ankstesnių eilučių, norėdamas įrodyti, kad tai veikia.

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

Taip pat galite rankiniu būdu nustatyti PATH vertę. Tai sunkus procesas, bet paprastesnis ir paprastesnis.

$eksportas PATH=/usr/vietinis/sbin:/usr/vietinis/esu:/usr/sbin:/usr/esu:/sbin:/esu:
/usr/žaidimai:/usr/vietinis/žaidimai:/spragtelėti/esu

Čia komandos reikšmė bus priskirta PATH. Išsaugokite failą ir iš naujo įkelkite bashrc.

$šaltinis~/.bashrc

Patikrinkime rezultatą.

$išmetė $ PATH

PATH vertė atnaujinta!

Galutinės mintys

„Bash“ kintamasis PATH yra svarbus. Bet kuri programa, vykdoma per „bash“ seansą, paveldi kintamąjį, todėl svarbu, kad PATH apimtų tik būtinus katalogus. Pridėjus daugiau katalogo, sistema bus tik atleista.

Norėdami pamatyti visus „bash“ aplinkos kintamuosius, paleiskite šią komandą. Pirmoji komandos dalis grąžins visus aplinkos kintamuosius, o antroji dalis surūšiuos išvestį didėjančia tvarka.

$env | rūšiuoti

Norite pagyvinti savo „bash“ patirtį? „Bash“ slapyvardžiai yra unikalus būdas pagreitinti ir pagardinti dalykus. Sužinokite daugiau apie „bash“ slapyvardžius .

Mėgautis!