Kā PATH darbojas Bash

How Does Path Work Bash



Rakstot komandu Linux terminālī, jūs parasti izsaucat programmu, lai veiktu noteiktu darbu, piemēram, ls , CD , rm , mkdir utt. Visas šīs programmas atrodas kaut kur failu sistēmā, vai ne? Kā bash zina, kur atrodas šīs programmas?

Šeit tiek izmantoti vides mainīgie, jo īpaši mainīgais PATH. Šis mainīgais ir atbildīgs par bash norādīšanu, kur meklēt šīs programmas. Apskatīsim, kā darbojas PATH un kā skatīt/modificēt PATH.







Vides mainīgais un $ PATH

Apvalka terminoloģijā vide ir apgabals, ko apvalks veido katru reizi, kad tā sāk sesiju. Lai pārvaldītu vidi, ir vides mainīgie, kas apzīmē dažādas vides daļas. Mainīgā vērtība var būt virkne, direktorija atrašanās vieta, vērtība vai citi.



PATH ir tāds vides mainīgais, kas izseko noteiktus direktorijus. Pēc noklusējuma mainīgais PATH satur šādas atrašanās vietas.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /am
  • /sbin
  • /snap/bin (ja ir instalēts Snap)

Vai vēlaties redzēt, kuri katalogi pašlaik ir reģistrēti sadaļā PATH? Iedarbiniet termināli un palaidiet šādu komandu.





$izmest ārā $ PATH

Šeit zīme $ apzīmē mainīgo. The izmest ārā komanda izdrukā mainīgā PATH vērtību.



Kāpēc šis īpašais vides mainīgais ir tik svarīgs? Tas ir tāpēc, kā pret to izturas apvalks un sistēma kopumā. Mainīgais PATH uzglabā, kur var atrast izpildāmos failus. Ikreiz, kad tiek palaista kāda komanda, apvalks meklē mērķa izpildāmā faila PATH direktorijus un palaiž to.

Piemēram, pārbaudīsim ar izmest ārā komandu. Šeit es izpildu atbalss komandu.

$izmest ārāSveika pasaule!

Kur atrodas izpildāmais fails izmest ārā ? Palaidiet nākamo komandu, lai uzzinātu.

$kuras izmest ārā

Kā redzam ,. izmest ārā izpildāmais fails atrodas vietnē/usr/bin/echo. Kur kura atrodas? Noskaidrosim.

$kuras kuras

Tas atrodas arī vietnē/usr/bin/which. Lielākā daļa komandu rīku atrodas direktorijā /usr /bin. Šeit bash konsultējas ar PATH, lai atrastu vietas, kur meklēt komandas izpildāmos failus.

PATH modificēšana

Pirms mēs mainām PATH vērtību, ir svarīgi saprast tā struktūru. Palaidiet komandu vēlreiz, lai pārbaudītu PATH vērtību.

$izmest ārā $ PATH

Ievērojiet, ka katru direktoriju atdala zīme:.

Direktorija pievienošana PATH

Lai PATH pievienotu pielāgotu direktoriju, mēs izmantosim bashrc failu. Tas ir īpašs bash skripts, kas tiek ielādēts katru reizi, kad sākas jauna bash sesija. Ņemiet vērā, ka bashrc fails ir unikāls katram Linux sistēmas lietotājam.

Atveriet bashrc failu teksta redaktorā. Ja bashrc fails vēl nav pieejams, redaktors to izveidos automātiski.

$ES atnācu~/.bashrc

Šeit tas ir noklusējuma bashrc, kas nāk kopā ar Ubuntu. Dodieties uz faila pēdējo (ja tāds pastāv) un pievienojiet šādu rindu.

$eksportēt PATH='$ PATH: / '

Šeit jaunā PATH mainīgā vērtība būs vecais mainīgais kopā ar tikko pievienoto direktoriju.

Saglabājiet failu un pasakiet bash, lai to atkārtoti ielādētu.

$avots~/.bashrc

Pārbaudīsim, vai jaunais ceļš ir veiksmīgi pievienots.

$izmest ārā $ PATH

Voila! PATH veiksmīgi atjaunināts! Tagad bash arī meklēs izpildāmo (-os) jauno ceļu. Man jau ir skripts demo.sh uz darbvirsmas. Redzēsim, vai bash to var izsaukt, nenorādot precīzu atrašanās vietu.

$demo.sh

Jā, bash to var saukt bez problēmām.

Notiek direktorija noņemšana no PATH

Nav vienkārša veida, kā pievienot/noņemt direktorijus no PATH. Ļauj man paskaidrot.

PATH vērtība faktiski ir fiksēta. Kā tad ar bashrc triku? Bashrc ir bash skripts, kas bash tiek ielādēts katru reizi, kad sākas sesija. Bashrc mēs tikko paziņojām, ka jaunā PATH vērtība būs tā noklusējuma vērtība un lietotāja definēts direktorijs. Tagad, katru reizi, kad tiek ielādēts bash, tas redz, ka bashrc stāsta, ka jāpiešķir jauna PATH vērtība, un tas ir tas, ko tā dara.

Līdzīgi, ja mēs vēlamies noņemt direktoriju no PATH, mums bashrc ir jāpiešķir cita PATH vērtība, lai katru reizi, kad sākas bash, tā izmantotu modificēto vērtību.

Apskatīsim šo piemēru. Es esmu gatavs noņemt direktoriju ~/Desktop no PATH.

$izmest ārā $ PATH | sed -Un 's/: ~ /Desktop $ //'

Ja direktorijs būtu/home/nepareizi/dir, komanda izskatītos šādi.

$izmest ārā $ PATH | sed -Un 's/: /home /nepareizi /dir $ //'

Šeit interesanta daļa ir sed rīks. Uzziniet vairāk par sed šeit un šeit . Īsi sakot, izmantojot sed, mēs mainām izmest ārā komandu. Tagad mēs varam izmantot šo modificēto izvadi, lai mainītu PATH vērtību.

Atveriet bashrc teksta redaktorā un pievienojiet šādas rindas. Es apzināti saglabāju iepriekšējās rindas, lai pierādītu, ka tas darbojas.

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

Varat arī manuāli iestatīt PATH vērtību. Tas ir darbietilpīgs process, bet vienkāršāks un vienkāršāks.

$eksportēt PATH=/usr/vietējais/sbin:/usr/vietējais/esmu:/usr/sbin:/usr/esmu:/sbin:/esmu:
/usr/spēles:/usr/vietējais/spēles:/snap/esmu

Šeit komandas vērtība tiks piešķirta PATH. Saglabājiet failu un atkārtoti ielādējiet bashrc.

$avots~/.bashrc

Pārbaudīsim rezultātu.

$izmest ārā $ PATH

PATH vērtība ir atjaunināta!

Galīgās domas

Bash gadījumā PATH mainīgais ir svarīgs. Jebkura programma, kas darbojas bash sesijā, pārmanto mainīgo, tāpēc ir svarīgi, lai PATH iekļautu tikai nepieciešamos direktorijus. Pievienojot vairāk direktoriju, sistēmai tiks pievienots tikai dublējums.

Lai redzētu visus bash vides mainīgos, palaidiet šo komandu. Pirmā komandu daļa atgriezīs visus vides mainīgos, bet otrā daļa sakārtos izvadi augošā secībā.

$env | kārtot

Vai vēlaties papildināt savu bash pieredzi? Bash aizstājvārdi piedāvā unikālu veidu, kā paātrināt un papildināt lietas. Uzziniet vairāk par bash aizstājvārdiem .

Izbaudi!