Hogyan működik a PATH a Bash -ben

How Does Path Work Bash



Amikor parancsot ír be a Linux terminálba, általában egy programot hív meg egy bizonyos feladat elvégzésére, pl. ls , CD , rm , mkdir , stb. Ezek a programok valahol a fájlrendszerben találhatók, nem? Honnan tudja a bash, hol vannak ezek a programok?

Itt jönnek szóba a környezeti változók, különösen a PATH változó. Ez a változó feladata, hogy megmondja a bash -nak, hogy hol kell keresni ezeket a programokat. Nézzük meg, hogyan működik a PATH, és hogyan tekintheti meg/módosíthatja a PATH -ot.







Környezeti változó és $ PATH

A shell terminológia szerint a környezet egy olyan terület, amelyet a shell minden egyes munkamenet indításakor felépít. A környezet kezeléséhez vannak környezeti változók, amelyek a környezet különböző részeit jelölik. A változó értéke lehet karakterlánc, könyvtár helye, értéke vagy más.



A PATH olyan környezeti változó, amely nyomon követi bizonyos könyvtárakat. Alapértelmezés szerint a PATH változó a következő helyeket tartalmazza.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /am
  • /sbin
  • /snap/bin (ha a Snap telepítve van)

Szeretné látni, hogy jelenleg mely könyvtárak vannak regisztrálva a PATH alatt? Indítson el egy terminált, és futtassa a következő parancsot.





$kidobta $ PATH

Itt a $ jel egy változót jelöl. Az kidobta parancs kinyomtatja a PATH változó értékét.



Most miért olyan fontos ez a környezeti változó? Ez azért van, mert a shell és a rendszer egésze hogyan kezeli. A PATH változó tárolja a végrehajtható fájlokat. Amikor parancs fut, a shell megkeresi a PATH könyvtárakat a végrehajtható fájlhoz, és futtatja azt.

Például teszteljünk a kidobta parancs. Itt egy visszhang parancsot futtatok.

$kidobtaHelló Világ!

Hol található a végrehajtható fájl kidobta ? Futtassa a következő parancsot, hogy megtudja.

$melyik kidobta

Mint látjuk, a kidobta futtatható fájl a/usr/bin/echo címen található. Melyik hol található? Találjuk ki.

$melyik melyik

Ez is a/usr/bin/which címen található. A legtöbb parancssori eszköz a /usr /bin könyvtár alatt található. Itt a bash a PATH -tal konzultál a parancs végrehajtható fájljainak kereséséhez szükséges helyekről.

A PATH módosítása

Mielőtt módosítanánk a PATH értékét, fontos megérteni szerkezetét. Futtassa újra a parancsot a PATH értékének ellenőrzéséhez.

$kidobta $ PATH

Figyelje meg, hogy az egyes könyvtárakat a: jel választja el egymástól.

Könyvtár hozzáadása a PATH -hoz

Ha egyéni könyvtárat szeretne hozzáadni a PATH -hoz, igénybe vesszük a bashrc fájl segítségét. Ez egy speciális bash szkript, amely a bash betöltődik minden alkalommal, amikor új bash munkamenet indul. Ne feledje, hogy a bashrc fájl a Linux rendszer minden egyes felhasználójának egyedi.

Nyissa meg a bashrc fájlt egy szövegszerkesztőben. Ha a bashrc fájl még nincs jelen, akkor a szerkesztő automatikusan létrehozza.

$jöttem~/.bashrc

Itt ez az alapértelmezett bashrc, amely az Ubuntuhoz tartozik. Menjen a fájl utolsó részéhez (ha létezik), és adja hozzá a következő sort.

$export PÁLYA='$ PATH: / '

Itt a PATH változó új értéke a régi változó lesz az újonnan hozzáadott könyvtárral együtt.

Mentse el a fájlt, és mondja meg a bash -nak, hogy töltse be újra.

$forrás~/.bashrc

Ellenőrizzük, hogy az új útvonalat sikeresen hozzáadtuk -e.

$kidobta $ PATH

Voálá! A PATH sikeresen frissítve! Most a bash keresni fogja az új elérési utat a végrehajtható fájl (ok) számára. Már van forgatókönyvem demo.sh asztalon. Nézzük meg, hogy a bash meg tudja -e hívni a pontos hely megadása nélkül.

$demo.sh

Igen, a bash problémamentesen közvetlenül hívhatja.

Könyvtár eltávolítása a PATH -ból

Nincs egyszerű módszer könyvtárak hozzáadására/eltávolítására a PATH -ból. Hadd magyarázzam.

A PATH értéke valójában rögzített. Akkor mi a helyzet a bashrc trükkel? A Bashrc egy bash szkript, amely a bash betöltődik minden egyes munkamenet indításakor. A bashrc-ben most kijelentettük, hogy a PATH új értéke lesz az alapértelmezett értéke és a felhasználó által megadott könyvtár. Most, amikor a bash betöltődik, látja, hogy a bashrc azt mondja, hogy rendeljen új értéket a PATH -hoz, és ezt teszi.

Hasonlóképpen, ha el akarunk távolítani egy könyvtárat a PATH-ból, újra hozzá kell rendelnünk egy másik PATH értéket a bashrc-ben, hogy minden alkalommal, amikor a bash elindul, a módosított értéket használja.

Nézzük ezt a példát. Hajlandó vagyok eltávolítani a ~/Desktop könyvtárat a PATH -ból.

$kidobta $ PATH | sed -És 's/: ~ /Desktop $ //'

Ha a könyvtár a/home/wrong/dir lenne, a parancs így nézne ki.

$kidobta $ PATH | sed -És 's/: /home /rossz /dir $ //'

Itt az érdekes rész a sed eszköz. További információ a sedről itt és itt . Röviden, a sed használatával módosítjuk a kidobta parancs. Most ezt a módosított kimenetet használhatjuk a PATH értékének megváltoztatására.

Nyissa meg a bashrc -t egy szövegszerkesztőben, és adja hozzá a következő sorokat. Szándékosan megtartom az előző sorokat, hogy bebizonyítsam, hogy működik.

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

Alternatív megoldásként manuálisan is beállíthatja a PATH értékét. Ez egy munkaigényes folyamat, de egyszerűbb és egyszerűbb.

$export PÁLYA=/usr/helyi/sbin:/usr/helyi/am:/usr/sbin:/usr/am:/sbin:/am:
/usr/játékok:/usr/helyi/játékok:/csattan/am

Itt a parancs értéke a PATH -hoz lesz rendelve. Mentse el a fájlt, és töltse be újra a bashrc -t.

$forrás~/.bashrc

Ellenőrizzük az eredményt.

$kidobta $ PATH

A PATH érték frissül!

Végső gondolatok

A bash -ban a PATH változó fontos. Bármely program, amely a bash munkameneten fut, örökli a változót, ezért fontos, hogy a PATH csak a szükséges könyvtárakat tartalmazza. További könyvtár hozzáadása csak redundanciát eredményez a rendszerben.

A bash összes környezeti változójának megtekintéséhez futtassa ezt a parancsot. Az első parancsrész az összes környezeti változót visszaadja, a második rész pedig a kimenetet növekvő sorrendbe rendezi.

$env | fajta

Szeretné fűszerezni bash -élményét? A Bash álnevek egyedülálló módot kínálnak a dolgok gyorsítására és fűszerezésére. További információ a bash álnevekről .

Élvezd!