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
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.
/etc/paths
-ről OSX rendszeren.