Come impostare PATH per le applicazioni avviate dal Finder

66

Le app lanciate tramite il Finder sembrano non rispettare il PERCORSO come impostato in .bash_profile . Quindi quando provo a eseguire codice da un IDE (Intellij) non ho più accesso ai programmi in /usr/local/bin , che viene normalmente aggiunto al mio percorso nel Terminale.

Apparentemente .MacOSX/environment.plist usato per essere il modo per farlo, ma non funziona più in Lion.

Come posso impostare PATH per le applicazioni lanciate dal Finder?

    
posta Caffeine Coma 19.05.2012 - 13:10
fonte

7 risposte

35

Se sei su 10.7 e non su 10.8, la soluzione qui sotto funziona bene:

Ho avuto lo stesso problema con eclipse, ma ora ho aggiunto ad es. quanto segue al mio .bash_profile e poi ha funzionato.

export PATH=some_path:another_path
launchctl setenv PATH $PATH

Nel caso tu voglia lasciare il percorso originale intatto, usa

p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p

invece (o solo launchctl setenv PATH /my/new/path:$(launchctl getenv PATH) ).

Nota: la modifica del PATH launchctl non avrà effetto fino a quando il Dock non sarà "riavviato". Un nuovo processo di Dock inizierà automaticamente dopo che quello corrente è stato ucciso con il comando:

killall Dock
    
risposta data 19.05.2012 - 13:54
fonte
19

Per rispondere alla tua domanda sul tuo "nuovo" problema, ho deciso di scrivere un'altra risposta, perché è più semplice da spiegare con i campioni.

Un modo per caricare le variabili di ambiente all'avvio del tuo strumento (IDE) di scelta è come si può fare con eclipse - Penso che ci sia una struttura simile anche nel tuo strumento (IDE).

Come può essere fatto in eclissi - link

(leggermente riscritto sulle variabili d'ambiente)

Crea un file di testo vuoto chiamato "eclipse.sh" nella directory del pacchetto di applicazioni Eclipse /Applications/eclipse/Eclipse.app/Contents/MacOS

Apri eclipse.sh in un editor di testo e inserisci i seguenti contenuti:

#!/bin/sh

. ~/.bash_profile

logger "'dirname \"$0\"'/eclipse"

exec "'dirname \"$0\"'/eclipse" $@

Nel Terminale imposta il flag eseguibile dello script di shell eclipse.sh, cioè:

chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh

Apri Eclipse.app Info.plist e modifica il valore per la chiave CFBundleExecutable da eclipse a eclipse.sh.

MacOS X non rileva automaticamente che Info.plist di Eclipse.app è stato modificato. Pertanto è necessario forzare l'aggiornamento del database LaunchService nel terminale utilizzando il comando lsregister:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app

La prossima volta che avvierai Eclipse.app dal Dock o dal Finder, le variabili d'ambiente dovrebbero essere impostate.

    
risposta data 20.05.2012 - 16:39
fonte
10

Su Mountain Lion tutte le modifiche di /etc/paths e /etc/launchd.conf non hanno alcun effetto!

I forum degli sviluppatori Apple dicono:

"Change the Info.plist of the .app itself to contain an "LSEnvironment" dictionary with the environment variables you want.

~/.MacOSX/environment.plist is no longer supported."

Quindi ho modificato direttamente la Info.plist dell'app (fai clic con il pulsante destro del mouse su "AppName.app" (in questo caso SourceTree) e poi su " Show package contents ")

ehaaggiuntounanuovacoppiachiave/dictchiamata:

<key>LSEnvironment</key><dict><key>PATH</key><string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string></dict>

(vedi: Documentazione LaunchServicesKeys su Apple )

ora l'app (nel mio caso SourceTree) usa il percorso dato e funziona con git 1.9.3: -)

PS: Ovviamente devi aggiustare la voce Path al tuo specifico percorso.

    
risposta data 24.01.2013 - 13:34
fonte
10

Su OS X 10.10 Yosemite, ho usato questo comando:

sudo launchctl config user path <my path setting>

Tieni presente che imposta il PATH launchtl per tutti gli utenti . Questo ha funzionato bene per il mio caso d'uso. Tieni presente che ti verrà chiesto di riavviare il computer affinché gli effetti vengano messi in pausa.

    
risposta data 31.07.2015 - 10:10
fonte
1

In Mountain Lion (10.8.4), $PATH viene trattato in qualche modo appositamente. launchctl setenv PATH /your/path:/here non ha alcun effetto sul $PATH nelle istanze di Terminal.app o Emacs.app successivamente lanciate dal Dock o dal Finder (mentre launchctl setenv SPONG foo funziona correttamente). Anche $HOME/.launchd.conf non funziona. /etc/launchd.conf è l'unico modo per trovare PATH impostato correttamente ovunque. Sfortunatamente, non è possibile utilizzare envars come $HOME , quindi tutti gli utenti sul mio laptop hanno /Users/nb/bin sul loro $PATH . Sono solo io, quindi non mi interessa.

    
risposta data 26.06.2013 - 17:22
fonte
-1

Prova ad impostare il percorso nel tuo ~ / .profile o ~ / .bash_profile o ~ / .zprofile (per zsh). Questo ha funzionato per me con VimR: non stava leggendo il PERCORSO quando è stato lanciato dal dock, ma ha funzionato quando è stato lanciato dal terminale. A proposito, stavo correndo su OSX 10.11.

Non ho una buona idea su questo per darti una grande spiegazione del perché funzioni, ci sono molte spiegazioni online sui diversi file di configurazione e su quello che fanno: link

Inoltre, vedi una discussione simile qui: link

    
risposta data 23.10.2015 - 00:20
fonte
-3

Su Mac OS X 10.8.4, Mountain Lion, l'ambiente del percorso include i percorsi elencati in questo file:

/etc/paths

Puoi modificare questo file usando uno strumento da riga di comando, come vim usando il seguente comando:

sudo vim /etc/paths
    
risposta data 16.07.2013 - 05:42
fonte

Leggi altre domande sui tag