Paano Gumagana ang PATH sa Bash

How Does Path Work Bash



Kapag nagta-type ka ng isang utos sa terminal ng Linux, karaniwang tumatawag ka sa isang programa upang gumawa ng isang tiyak na trabaho, halimbawa, ls , CD , rm , mkdir , atbp. Ang lahat ng mga programang ito ay matatagpuan sa isang lugar sa file system, tama ba? Paano malalaman ng bash kung nasaan ang mga programang ito?

Dito nagmula ang mga variable ng kapaligiran, lalo na ang variable ng PATH. Ang variable na ito ay responsable para sa pagsasabi sa bash kung saan hahanapin ang mga programang iyon. Suriin natin kung paano gumagana ang PATH at kung paano tingnan / baguhin ang PATH.







Ang variable ng kapaligiran at $ PATH

Sa terminolohiya ng shell, ang kapaligiran ay isang lugar na itinatayo ng shell sa tuwing nagsisimula ito ng isang sesyon. Upang pamahalaan ang kapaligiran, may mga variable ng kapaligiran na nagsasaad ng iba't ibang bahagi ng kapaligiran. Ang halaga ng variable ay maaaring string, lokasyon ng direktoryo, halaga o iba pa.



Ang PATH ay isang variable ng kapaligiran na sumusubaybay sa ilang mga direktoryo. Bilang default, naglalaman ang variable na PATH ng mga sumusunod na lokasyon.



  • / usr / basurahan
  • / usr / sbin
  • / usr / local / basurahan
  • / usr / local / sbin
  • / am
  • / sbin
  • / snap / bin (kung naka-install ang Snap)

Nais mo bang makita kung anong mga direktoryo ang kasalukuyang nakarehistro sa ilalim ng PATH? Sunog ang isang terminal at patakbuhin ang sumusunod na utos.





$itinapon $ PATH

Dito, ang $ sign ay upang magpahiwatig ng isang variable. Ang itinapon print ng utos ang halaga ng variable na PATH.



Ngayon, bakit ang partikular na variable ng kapaligiran na ito ay napakahalaga? Ito ay dahil kung paano ito tinatrato ng shell at ng system sa kabuuan. Ang mga variable na tindahan ng PATH kung saan maaaring matagpuan ang mga maipapatupad. Kailan man patakbuhin ang anumang utos, titingnan ng shell ang mga direktoryo ng PATH para sa target na maipapatupad na file at pinapatakbo ito.

Halimbawa, subukan natin kasama ang itinapon utos Dito, nagpapatakbo ako ng isang utos ng echo.

$itinaponKamusta Mundo!

Nasaan ang maipapatupad na file ng itinapon ? Patakbuhin ang susunod na utos upang malaman.

$alin itinapon

Tulad ng nakikita natin, ang itinapon maipapatupad ay matatagpuan sa / usr / bin / echo. Saan matatagpuan? Alamin Natin.

$alin alin

Matatagpuan din ito sa / usr / bin / kung saan. Karamihan sa mga tool ng utos ay matatagpuan sa ilalim ng direktoryo / usr / bin. Dito, kumonsulta si bash sa PATH para sa mga lokasyon upang maghanap para sa (mga) maisasagawa na isang utos.

Pagbabago ng PATH

Bago namin baguhin ang halaga ng PATH, mahalagang maunawaan ang istraktura nito. Patakbuhin muli ang utos upang suriin ang halaga ng PATH.

$itinapon $ PATH

Pansinin na ang bawat isa sa mga direktoryo ay pinaghihiwalay ng isang: mag-sign.

Pagdaragdag ng direktoryo sa PATH

Upang magdagdag ng isang pasadyang direktoryo sa PATH, kukuha kami ng tulong ng bashrc file. Ito ay isang espesyal na script ng bash na nai-load sa bawat oras na magsimula ang isang bagong sesyon ng bash. Tandaan na ang bashrc file ay natatangi sa bawat solong gumagamit sa Linux system.

Buksan ang file ng bashrc sa isang text editor. Kung ang bashrc file ay wala pa, pagkatapos ay awtomatikong lilikha ito ng editor.

$dumating ako~/.bashrc

Dito, ito ang default na bashrc na kasama ng Ubuntu. Pumunta sa huling bahagi ng file (kung mayroon ito) at idagdag ang sumusunod na linya.

$i-export PATH='$ PATH: / '

Dito, ang bagong halaga ng variable na PATH ay ang dating variable kasama ang bagong direktoryo na naidagdag lamang namin.

I-save ang file at sabihin sa bash upang i-reload ito.

$pinagmulan~/.bashrc

I-verify natin kung matagumpay na naidagdag ang bagong landas.

$itinapon $ PATH

Voila! Matagumpay na na-update ang PATH! Ngayon, hahanapin din ng bash ang bagong landas para sa (mga) maipapatupad. May script na ako demo.sh sa desktop. Tingnan natin kung maaaring tawagan ito ng bash nang hindi tinukoy ang eksaktong lokasyon.

$demo.sh

Yup, bash ay maaaring direktang tawagan ito nang walang anumang problema.

Inaalis ang direktoryo mula sa PATH

Walang prangkang paraan ng pagdaragdag / pag-aalis ng mga direktoryo mula sa PATH. Hayaan mo akong magpaliwanag.

Ang halaga ng PATH ay talagang naayos. Pagkatapos, kumusta ang bashrc trick? Ang Bashrc ay isang bash script na nai-load sa bawat oras na nagsisimula ito sa isang session. Sa bashrc, ipinahayag lamang namin na ang bagong halaga ng PATH ay ang default na halaga at ang direktoryo na tinukoy ng gumagamit. Ngayon, sa tuwing maglo-load ang bash, nakikita nito na sinasabi ng bashrc na magtalaga ng isang bagong halaga ng PATH at iyon ang ginagawa nito.

Katulad nito, kung nais naming alisin ang isang direktoryo mula sa PATH, kailangan naming magtalaga ulit ng ibang halaga ng PATH sa bashrc upang sa tuwing magsisimula ang bash, gumagamit ito ng binagong halaga.

Tingnan natin ang halimbawang ito. Handa akong alisin ang direktoryo ~ / Desktop mula sa PATH.

$itinapon $ PATH | sed -At 's /: ~ / Desktop $ //'

Kung ang direktoryo ay / home / mali / dir, magiging ganito ang utos.

$itinapon $ PATH | sed -At 's /: / home / mali / dir $ //'

Dito, ang kagiliw-giliw na bahagi ay ang tool na sed. Matuto nang higit pa tungkol sa sed dito at dito . Mahabang kwento, gamit ang sed, binabago namin ang output ng itinapon utos Ngayon, maaari naming gamitin ang binagong output na ito upang baguhin ang halaga ng PATH.

Buksan ang bashrc sa isang text editor at idagdag ang mga sumusunod na linya. Sinadya kong itago ang mga nakaraang linya upang patunayan na gumagana ito.

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

Bilang kahalili, maaari mo ring manu-manong itakda ang halaga ng PATH. Ito ay isang proseso ng paggawa ngunit mas prangka at simple.

$i-export PATH=/usr/lokal/sbin:/usr/lokal/am:/usr/sbin:/usr/am:/sbin:/am:
/usr/mga laro:/usr/lokal/mga laro:/iglap/am

Dito, ang halaga ng utos ay itatalaga sa PATH. I-save ang file at i-reload ang bashrc.

$pinagmulan~/.bashrc

I-verify natin ang resulta.

$itinapon $ PATH

Ang halaga ng PATH ay na-update!

Pangwakas na saloobin

Sa bash, ang variable ng PATH ay isang mahalaga. Anumang programa na tumatakbo sa bash session ay nagmamana ng variable, kaya't mahalagang isama lamang ng PATH ang mga kinakailangang direktoryo. Ang pagdaragdag ng higit pang direktoryo ay magdaragdag lamang ng kalabisan sa system.

Upang makita ang lahat ng mga variable ng kapaligiran para sa bash, patakbuhin ang utos na ito. Ang unang bahagi ng utos ay ibabalik ang lahat ng mga variable ng kapaligiran at ang pangalawang bahagi ay uuriin ang output sa pataas na pagkakasunud-sunod.

$env | pag-uri-uriin

Nais bang pagandahin ang iyong karanasan sa bash? Nag-aalok ang mga alias ng Bash ng isang natatanging paraan ng pagpapabilis at pag-spice ng mga bagay. Matuto nang higit pa tungkol sa bash alias .

Mag-enjoy!