Kuinka PATH toimii Bashissa

How Does Path Work Bash



Kun kirjoitat komentoa Linux -päätelaitteessa, yleensä kutsut ohjelmaa tekemään tietyn työn, esim. ls , CD , rm , mkdir , jne. Kaikki nämä ohjelmat sijaitsevat jossain tiedostojärjestelmässä, eikö? Mistä bash tietää missä nämä ohjelmat ovat?

Tässä tulevat ympäristömuuttujat, etenkin PATH -muuttuja. Tämä muuttuja vastaa bashille, mistä etsiä näitä ohjelmia. Katsotaanpa, miten PATH toimii ja miten PATH: ta tarkastellaan/muokataan.







Ympäristömuuttuja ja $ PATH

Kuoren terminologiassa ympäristö on alue, jonka kuori rakentaa joka kerta, kun se aloittaa istunnon. Ympäristön hallitsemiseksi on olemassa ympäristömuuttujia, jotka ilmaisevat ympäristön eri osia. Muuttujan arvo voi olla merkkijono, hakemiston sijainti, arvo tai muut.



PATH on sellainen ympäristömuuttuja, joka seuraa tiettyjä hakemistoja. Oletuksena PATH -muuttuja sisältää seuraavat sijainnit.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /olen
  • /sbin
  • /snap/bin (jos Snap on asennettu)

Haluatko nähdä, mitkä hakemistot ovat tällä hetkellä PATH -rekisterissä? Käynnistä päätelaite ja suorita seuraava komento.





$heitti pois $ PATH

Tässä $ -merkki tarkoittaa muuttujaa. The heitti pois komento tulostaa PATH -muuttujan arvon.



Miksi tämä erityinen ympäristömuuttuja on niin tärkeä? Se johtuu siitä, miten kuori ja koko järjestelmä kohtelee sitä. PATH -muuttuja tallentaa suoritettavat tiedostot. Aina kun jokin komento suoritetaan, kuori etsii suoritettavan suoritustiedoston PATH -hakemistot ja suorittaa sen.

Tehdään esimerkiksi testi heitti pois komento. Tässä suoritan kaikukomentoa.

$heitti poisHei maailma!

Missä on suoritettava tiedosto heitti pois ? Ota selvää suorittamalla seuraava komento.

$joka heitti pois

Kuten näemme, heitti pois suoritettava tiedosto sijaitsee osoitteessa/usr/bin/echo. Missä kumpi sijaitsee? Otetaan selvää.

$joka joka

Se sijaitsee myös osoitteessa/usr/bin/which. Useimmat komentotyökalut sijaitsevat hakemistossa /usr /bin. Täällä bash hakee PATH: sta paikkoja etsiä komennon suoritettavia tiedostoja.

PATH: n muokkaaminen

Ennen kuin muutamme PATH -arvon arvoa, on tärkeää ymmärtää sen rakenne. Tarkista komento PATH suorittamalla komento uudelleen.

$heitti pois $ PATH

Huomaa, että jokainen hakemisto on erotettu: -merkillä.

Lisätään hakemisto PATH -reitille

Jos haluat lisätä mukautetun hakemiston PATH: ään, käytämme bashrc -tiedoston apua. Se on erityinen bash -skripti, joka ladataan joka kerta, kun uusi bash -istunto käynnistyy. Huomaa, että bashrc -tiedosto on ainutlaatuinen jokaiselle Linux -järjestelmän käyttäjälle.

Avaa bashrc -tiedosto tekstieditorissa. Jos bashrc -tiedostoa ei vielä ole, editori luo sen automaattisesti.

$tulin~/.bashrc

Tässä se on oletusarvoinen bashrc, joka tulee Ubuntun mukana. Siirry tiedoston viimeiseen osaan (jos sellainen on) ja lisää seuraava rivi.

$viedä PATH=''$ PATH: / '

Tässä PATH -muuttujan uusi arvo on vanha muuttuja yhdessä juuri lisäämämme uuden hakemiston kanssa.

Tallenna tiedosto ja pyydä bashia lataamaan se uudelleen.

$lähde~/.bashrc

Tarkista, onko uusi polku lisätty onnistuneesti.

$heitti pois $ PATH

Voila! PATH päivitetty onnistuneesti! Nyt bash etsii myös suoritettavia tiedostoja uudesta polusta. Minulla on jo käsikirjoitus demo.sh työpöydällä. Katsotaanpa, voiko bash kutsua sen määrittämättä tarkkaa sijaintia.

$demo.sh

Kyllä, bash voi kutsua sitä suoraan ilman ongelmia.

Poistetaan hakemistoa reitistä PATH

Ei ole yksinkertaista tapaa lisätä/poistaa hakemistoja PATH: sta. Anna minun selittää.

PATH -arvo on todella kiinteä. Entä sitten bashrc -temppu? Bashrc on bash -skripti, joka ladataan joka kerta, kun se aloittaa istunnon. Ilmoitimme bashrc: ssa juuri, että PATH: n uusi arvo on sen oletusarvo ja käyttäjän määrittämä hakemisto. Nyt joka kerta, kun bash latautuu, se näkee, että bashrc käskee antaa uuden arvon PATH ja sitä se tekee.

Samoin, jos haluamme poistaa hakemiston PATH: sta, meidän on määritettävä uudelleen eri PATH-arvo bashrc: ssa, jotta se käyttää aina muokattua arvoa aina, kun bash käynnistyy.

Katsotaanpa tätä esimerkkiä. Olen valmis poistamaan hakemiston ~/Desktop PATH: sta.

$heitti pois $ PATH | sed -Ja 's/: ~ /Desktop $ //'

Jos hakemisto olisi/home/wrong/dir, komento näyttäisi tältä.

$heitti pois $ PATH | sed -Ja 's/: /koti /väärä /dir $ //'

Tässä mielenkiintoinen osa on sed -työkalu. Lisätietoja sedistä tässä ja tässä . Lyhyesti sanottuna, käyttämällä sediä muutamme heitti pois komento. Nyt voimme käyttää tätä muokattua lähtöä PATH -arvon muuttamiseen.

Avaa bashrc tekstieditorissa ja lisää seuraavat rivit. Pidän tarkoituksellisesti yllä edellisiä rivejä todistaakseni, että se toimii.

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

Vaihtoehtoisesti voit myös asettaa PATH -arvon manuaalisesti. Se on työläs prosessi, mutta yksinkertaisempi ja yksinkertaisempi.

$viedä PATH=/usr/paikallinen/sbin:/usr/paikallinen/olen:/usr/sbin:/usr/olen:/sbin:/olen:
/usr/pelit:/usr/paikallinen/pelit:/napsahtaa/olen

Tässä komennon arvo määritetään PATH: lle. Tallenna tiedosto ja lataa bashrc uudelleen.

$lähde~/.bashrc

Tarkistetaan tulos.

$heitti pois $ PATH

PATH -arvo päivitetään!

Lopulliset ajatukset

Bashissa PATH -muuttuja on tärkeä. Kaikki bash -istunnon läpi kulkevat ohjelmat perivät muuttujan, joten on tärkeää, että PATH sisältää vain tarvittavat hakemistot. Lisää hakemisto lisää vain redundanssia järjestelmään.

Jos haluat nähdä kaikki bashin ympäristömuuttujat, suorita tämä komento. Ensimmäinen komento -osa palauttaa kaikki ympäristömuuttujat ja toinen osa lajittelee tuloksen nousevassa järjestyksessä.

$env | järjestellä

Haluatko piristää bash -kokemustasi? Bash -aliakset tarjoavat ainutlaatuisen tavan nopeuttaa ja maustaa asioita. Lisätietoja bash -aliaksista .

Nauttia!