Co je PATH v systému Mac OS? Použil jsem ho k instalaci globálních nástrojů příkazového řádku, ale jedinou dokumentací, kterou jsem našel, jsou  výukové programy , jak to udělat, bez skutečného vysvětlení, co se děje pod kapotou. Také jsem nenašel relevantní stránku na  Wikipedii . 
 Takže jaký je účel PATH a jaký je rozdíl mezi /etc/paths a ~/.bash_profile **? 
 Například v mém paths souboru, vidím toto: 
/usr/bin /bin /usr/sbin /sbin /usr/local/bin  Ale v mém ~/.bash_profile, Vidím toto: 
# 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  Je to pouze uživatelsky specifický doplněk k souboru paths? Co „Všechny ty věci v paths, jako /usr/bin? 
Komentáře
- Nekombinujte prosím ‚ více otázek do jednoho příspěvku. Každá z vašich otázek by zde byla vítána samostatně, ale ne všechny společně. Upravte to prosím na jednu otázku, můžete zkombinovat 1 a 2, ale ostatní nemají s PATH konkrétně nic společného. 3 je zodpovězeno zde 4 je vysvětleno zde a 5 nedává moc smysl I ‚ mám strach. Ani vaše bonusová otázka, jaké soubory jsou binární? Skripty nejsou.
- Upravil jsem svoji otázku dolů. Také jsem zjistil, že tyto odkazy jsou užitečné. Děkujeme.
Odpověď
1. Jaký je účel PATH?
  PATH  je  proměnná prostředí , která obsahuje seznam adresářů oddělených dvojtečkou, kde váš shell bude hledat spustitelné soubory, které pojmenujete na příkazovém řádku, aniž byste poskytli explicitní cesta k nim (jako ve vašem jsdoc příkladu). Pokud tedy váš PATH má 
/usr/bin:/bin:/home/bin , bude v těchto adresářích vyhledán jakýkoli spustitelný soubor, který zavoláte podle jména. (v tomto pořadí) a první nalezený spustitelný soubor je spuštěný.
2. Jaký je rozdíl mezi / etc / paths a ~ / .bash_profile
 Podle  této otázky na ServerFault , /etc/paths slouží k globálnímu nastavení PATH (tj. Celého systému, pro všechny uživatele), zatímco ~/.bash_profile slouží k nastavení předvoleb pro jednotlivé uživatele (kde ~ bude domovský adresář uživatele). Co je napsáno v .bash_profile může buď přidat do globálního PATH z /etc/paths nebo jej úplně přepsat. 
 Pro záznam, /etc/paths se zdá být zvláštností MAC OS: přinejmenším jsem se s ním na GNU / Linux nenarazil. 
Komentáře
Odpověď
Jaký je účel PATH?
 Takto funguje váš  shell  vyhledá programy. Když například napíšete ls, bude spuštěn program s názvem ls, který žije v /bin na většině systémů, včetně Mac OS X. Váš shell to zjistí jen proto, že /bin je v PATH. 
 Prostředí vyhledává programy v PATH pořadí, zleva doprava. Pokud jsou ve vašem systému dva ls programy a jejich adresáře jsou oba ve vašich PATH, najde ten v uvedeném adresáři. nejprve ve vašem PATH. 
Jaký je rozdíl mezi / etc / paths a ~ / .bash_profile
 Cesty nastavené v /etc/paths jsou přidány do PATH spuštění ve všech skořápkách v systému Mac OS X. 
 ~/.bash_profile je jen jeden z několika skriptů prostředí, které Bash spouští při spuštění, a několik z nich je specifických pro Bash. Proto pokud změníte svůj shell — Mac OS X také dodává tcsh a zsh, například — změny provedené v /etc/bashrc se na váš nový shell nevztahují.
 /etc/paths je také konfigurační soubor na úrovni systému, zatímco ~/.bash_profile je na uživatele. Pokud jste ve svém počítači Mac nastavili více interaktivních uživatelů, nechtěli byste přidat adresáře do /etc/paths, které jste nechtěli zobrazovat v každém PATH. Totéž platí pro /etc/bashrc, kromě toho, co se samozřejmě týká pouze uživatelů, kteří používají Bash jako svůj shell. 
Jaký je rozdíl mezi PATH a $ PATH a $ {PATH}?
 Obvykle vidíte pouze proměnná bez sigilu, když nastavujete proměnnou. FOO=bar nastaví proměnnou prostředí FOO na řetězec bar. Pokud zadáte set, shell vám zobrazí všechny proměnné prostředí a v takovém případě uvidíte také proměnnou bez jakéhokoli sigilu. 
 $PATH a ${PATH} jsou obvykle zaměnitelné. Říkají shellu, aby rozšířil aktuální PATH proměnnou “ s hodnota na místě. Rozdíl má co do činění s tím, jak a kde je používáte. Například: 
$ FOO=bar $ echo $FOO bar $ echo $FOOx $ echo ${FOO}x barx  Ve druhém příkazu echo shell nevytiskne nic, protože požádá shell o tisk proměnná s názvem FOOx, která neexistuje; prostředí považuje neexistující proměnné za prázdné. Protože třetí echo používá syntaxi složené závorky , umožňuje shellu zjistit, že požadujete proměnnou FOO a že x je jen další znak, který chcete ihned vytisknout . 
Mimochodem existuje další způsob, jak dosáhnout stejného efektu bez složených závorek:
$ echo "$FOO"x barx  Proměnné prostředí jsou rozbaleny v uvozovky a uvozovky oddělují x od variabilní expanze, takže prostředí dělá správnou věc. 
 Používám FOO proměnná prostředí zde pouze pro přehlednost. Všechno, co jsem napsal výše, platí stejně dobře pro , protože se jedná pouze o další proměnnou prostředí. Ukázkové texty by byly mnohem delší. 
Co znamená export PATH? Kdy exportujeme?
 Vezmeme-li z výše uvedeného FOO příkladu, pokud byste měli spustit jiný program, neviděl bych proměnnou FOO, protože se neexportuje. Žije pouze v rámci jedné instance prostředí: 
$ echo $FOO bar $ bash $ echo $FOO $ exit $ export FOO $ bash $ echo $FOO bar  Když poprvé spustím nový bash shell pod tím, který jsem již používal, zkuste ukázat hodnotu FOO, získejte mezeru, protože FOO nebyl exportován pro zobrazení podprogramů. Potom jsem opustil druhou bash instanci, exportoval ji, znovu spustil bash a nyní druhá instance vidí hodnotu FOO. 
 export používáte, když chcete, aby podprogramy viděly hodnoty nastavené v shellu, a nepoužívejte je když si nepřejete, aby se to stalo. 
Obvykle neexportuji dočasné proměnné do skriptů prostředí, protože nechci, aby měnily chování programů z tohoto prostředí.
Nebudu odpovídat na žádné vaše další otázky. Měli jste klást pouze jednu otázku najednou. „Odpověděl jsem jen na tolik, protože jsou vágně příbuzní. Všechno ostatní patří do samostatné otázky.
/etc/pathsna OSX.