Mi az a PATH egy Mac OS rendszeren?

Mi a PATH egy Mac OS-ben? Globális parancssori eszközök telepítésére használtam, de az egyetlen dokumentáció, amelyet megtaláltam, a oktatóanyagok csak erre szolgálnak, valódi magyarázat nélkül a történésekre a motorháztető alatt. Nem találtam releváns oldalt sem a Wikipédián .

Tehát mi a célja a PATH és mi a különbség /etc/paths és ~/.bash_profile ** között?

Például a paths fájlban ezt látom:

/usr/bin /bin /usr/sbin /sbin /usr/local/bin 

De a ~/.bash_profile, Ezt látom:

# Setting PATH for Python 2.7 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH 

Ez csak felhasználóspecifikus kiegészítés a paths fájlhoz? “mindez a paths fájlban, például /usr/bin?

Megjegyzések

  • Kérjük, ne ‘ ne egyesítsen több kérdést egyetlen bejegyzésben. Minden kérdését külön szívesen látnánk itt, de nem így együtt. Kérem, hogy ezt egyetlen kérdésre vágja le, kombinálhatná az 1-et és a 2-t, de a többieknek semmi közük a PATH-hoz. A 3-ra válaszolunk itt 4 megmagyarázzuk itt és az 5-nek nincs sok értelme I ‘ félek. A bónusz kérdésed sem az, hogy mely fájlok binárisak? A szkriptek nem.
  • A kérdésemet lefelé szerkesztettem. Ezenkívül hasznosnak találtam ezeket a linkeket. Köszönet.

Válasz

1. Mi a PATH célja?

PATH egy környezeti változó , amely kettősponttal elválasztott könyvtárakat tartalmaz, ahol a shell olyan futtatható fájlokat keres, amelyeket a parancssorban nevez meg, anélkül, hogy explicit elérési útjuk hozzájuk (mint jsdoc példádban). Így ha a PATH

/usr/bin:/bin:/home/bin 

fájlja van, akkor minden futtatható fájl, amelyet név szerint hív, meg fog keresni ezekben a könyvtárakban (ebben a sorrendben), és az első megtalálható futtatható.

2. Mi a különbség az / etc / paths és a ~ / .bash_profile

szerint ez a kérdés ServerFault , /etc/paths a PATH globális (azaz rendszerszintű, minden felhasználó számára), míg a ~/.bash_profile felhasználónkénti beállítások megadására szolgál (ahol ~ lesz a felhasználó otthoni könyvtár). A vagy hozzáadhat a PATH globális /etc/paths -hez, vagy teljesen felülírhatja.

a rekord, /etc/paths MAC OS sajátosságnak tűnik: legalábbis GNU / Linuxon nem találkoztam vele.

Megjegyzések

  • Most szerkesztettem őket, de köszönöm, hogy mindegyiküket megválaszoltam!
  • @ggundersen Vágtam a válaszomat, hogy illeszkedjen szerkesztett kérdéséhez.
  • @ggundersen érdemes elolvasnod válaszomat és th e linkek találhatók a /etc/paths -ről OSX rendszeren.

Válasz

Mi a célja a PATH-nak?

Így shell programokat talál. Ha például beírja a ls szót, akkor ez egy ls nevű programot futtat, amely a /bin a legtöbb rendszeren, beleértve a Mac OS X-et is. A shell csak ezt találja meg, mert a /bin a PATH fájlban található.

A héj PATH sorrendben, balról jobbra keresi a programokat. Ha két ls program van a rendszeren, és a könyvtárak mind a PATH fájlban vannak, akkor a felsorolt könyvtárban található. először a PATH fájlban.

Mi a különbség az / etc / paths és a ~ / .bash_profile

A /etc/paths mezőben beállított útvonalak hozzáadódnak a PATH indítás a Mac OS X összes héjában.

~/.bash_profile csak egy a Bash által indításkor futtatott számos shell szkript közül, és ezek közül több Bash-specifikus. Ezért ha megváltoztatja a héját — a Mac OS X a következőt is szállítja: Például a — módosítások, amelyek a /etc/bashrc elemre vonatkoznak, nem vonatkoznak az új héjára.

Ezenkívül a /etc/paths egy rendszerszintű konfigurációs fájl, míg a ~/.bash_profile felhasználónként. Ha több interaktív felhasználót állított be a Mac számítógépén, akkor nem szeretne könyvtárakat felvenni a /etc/paths fájlok közé, amelyeket nem akart mindenki megjelenni “s PATH. Ugyanez vonatkozik a /etc/bashrc -re is, kivéve, hogy természetesen csak azokra a felhasználókra vonatkozik, akik a Bash-t használják shellként.

Mi a különbség a PATH, valamint a $ PATH és a $ {PATH} között?

Általában csak a A változó a sigil nélkül, amikor a változót állítja be. FOO=bar a FOO környezeti változót a bar. Ha beírja a set parancsot, a shell megjeleníti az összes környezeti változót, és ebben az esetben a változót is jel nélkül látja.

$PATH és ${PATH} általában felcserélhetők. Azt mondják a héjnak, hogy bővítse ki az aktuális PATH változót ” s érték a helyén. A különbség azzal függ össze, hogy hogyan és hol használja őket. Például:

$ FOO=bar $ echo $FOO bar $ echo $FOOx $ echo ${FOO}x barx 

A második echo parancsban a shell semmit nem nyomtat, mert kéri a shell nyomtatását egy FOOx nevű változó, amely nem létezik; a shell a nem létező változókat üresként kezeli. Mivel a harmadik echo a göndör zárójeles szintaxist használja , lehetővé teszi a héj számára, hogy lássa, hogy a FOO változót kéri-e, és hogy az x csak egy másik karakter, amelyet azonnal utána szeretne kinyomtatni .

Egyébként ugyanazt a hatást érhetjük el göndör zárójelek nélkül:

$ echo "$FOO"x barx 

A környezeti változók kibővülnek dupla idézőjelek, és az idézőjelek elválasztják az x t a változó kiterjesztésétől, így a héj helyesen cselekszik.

I “m a környezeti változó itt, csak az érthetőség kedvéért. Minden, amit fentebb írtam, ugyanúgy vonatkozik a , mivel ez csak egy másik környezeti változó. A példaszövegek sokkal hosszabbak lennének.

Mit jelent a PATH exportálása? Mikor exportáljuk?

A fenti FOO példát véve, ha másik programot futtatna, akkor nem látná a FOO változót, mert nem exportálja. Csak abban az egyetlen shell példányban él:

$ echo $FOO bar $ bash $ echo $FOO $ exit $ export FOO $ bash $ echo $FOO bar 

Amikor először futtattam egy új bash héjat a már használt alatt, próbálja meg megmutatni a FOO értékét, töltsön ki egy üres elemet, mert a FOO fájlt nem exportálták alprogramok számára. Aztán kiléptem a második bash példányból, exportáltam, újra lefuttattam az bash -t, és most a második példány meglátja a FOO.

A export funkciót akkor használja, ha azt szeretné, hogy az alprogramok a héjban beállított értékeket láthassák, és ne használja amikor nem akarod, hogy ez megtörténjen.

Általában nem exportálok ideiglenes változókat shell parancsfájlokba, mert nem akarom, hogy megváltoztassák az adott parancsfájlból futó programok viselkedését.

Nem fogok válaszolni egyetlen kérdésére sem. Egyszerre csak egy kérdést szabad feltennie. Csak azért válaszoltam ennyien, mert homályosan kapcsolódnak egymáshoz. Minden más külön kérdésbe tartozik.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük