sviluppo-web-qa.it

Come posso impostare la variabile d'ambiente PATH globale su OS X?

Vorrei aggiungere alla variabile d'ambiente PATH globale su OS X in modo che tutte le shell utente e le applicazioni GUI ottengano lo stesso ambiente PATH.

So di poter aggiungere il percorso negli script di avvio di Shell, ma tali impostazioni non sono ereditate dalle applicazioni GUI.

L'unico modo che ho trovato finora è di ridefinire la variabile d'ambiente PATH in / etc/launchd.conf:

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

Non riuscivo a capire un modo per aggiungere effettivamente al PERCORSO in launchd.conf.

Sono un po 'preoccupato per questo metodo, ma finora questa è l'unica cosa che funziona. Esiste un modo migliore?

102
lajos

informazioni sulla GUI di palmer è corretto, ma esiste un modo più gestibile per modificare il percorso visto da Shell. Come detto mediaslave , puoi modificare /etc/paths, ma ancora meglio puoi rilasciare un file di testo in /etc/paths.d/ che contiene un percorso e tutte le shell costruiranno il percorso correttamente.

Ad esempio, sul mio sistema:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin
72
cogg

/etc/launchd.conf

Il launchd.conf file è ** l'unica soluzione completa che funzionerà sia per la riga di comando che per le applicazioni GUI su OS X v10.8 (Mountain Lion) e v10.9 (Mavericks ), che funzionerà con le applicazioni della GUI e della console, per tutti gli utenti.

Sudo touch /etc/launchd.conf
Sudo nano /etc/launchd.conf

Inserisci

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Nell'esempio sopra ho aggiunto /usr/local/bin ai valori di ambiente predefiniti per PATH.

Tieni presente che questo file non è uno script e non hai la possibilità di utilizzare le sostituzioni. Inoltre, per applicare questi è necessario riavviare.

Ricorda, tutte le altre sono solo soluzioni parziali:

  • environment.plist non funziona per le applicazioni avviate tramite Spotlight.
  • /etc/paths - solo per console
  • /etc/csh.cshrc o /etc/bashrc - solo per alcune shell

Questa risposta si basa sulla stessa domanda di Impostazione delle variabili di ambiente su Mac OS X.

48
sorin

Dovrai impostarlo su una base Shell-by-Shell; Le shell di tipo Bash e csh non condividono gli stessi file di configurazione e la stessa sintassi per regolare il PERCORSO.

Cercare di farlo in launchctl non funzionerà, perché le variabili di ambiente sono impostate all'accesso; non esistono a livello di sistema in Unix al di fuori di una sessione Shell.

Quindi vorrai aggiungere

setenv PATH "$PATH:/add/my/extra/path"

a /etc/csh.cshrc e

export PATH="$PATH:/more/paths:/

a /etc/bashrc.

Se vuoi variabili d'ambiente nelle applicazioni GUI, è più complicato. Devi creare un file .MacOSX/environment.plist Nella home directory di ogni utente. La directory .MacOSX Probabilmente non esisterà per impostazione predefinita, quindi dovrai crearla.

Il formato del file è così:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

Altro su environment.plistè sul sito di Apple .

7
palmer

Puoi modificare il tuo percorso globale aggiungendo righe a /etc/paths, un percorso per riga.

Sudo nano /etc/paths dovrebbe portarti lì.

3
manumoomoo

Hai dato un'occhiata alla pagina man per il path_helper utility da riga di comando su OS X? Ho risposto a una domanda in qualche modo correlata su SO che penso tu possa trovare utile.

1
ayaz

Non sono sicuro che qualcuno abbia trattato il modo più semplice e più elegante . Almeno su Mac OS X v10.6 (Snow Leopard).

Fare casini con il [/etc/|~/.] di [profile|bashrc] I file potrebbero funzionare, ma è un po 'un trucco. Il /etc/paths.d/ directory è la strada da percorrere:

  • Sudo nel tuo editor preferito.
  • Crea un nuovo file chiamato *name* (solo non nominarlo come qualcosa che è già lì) in /etc/paths.d/ con un percorso per riga:

    /usr/X11/bin
    /Developer/usr/bin
    
  • Quindi aggiungere

    eval '/usr/libexec/path_helper -s`
    

    su profile o bashrc e dovresti essere pronto per partire.

1
noboomu

Non sono sicuro del motivo per cui dovresti utilizzare /etc/launchd.conf anziché /etc/profile - ma non sono un esperto di Mac OS X - Ti credo che sono sicuro che funzioni, ma launchd è l'implementazione/sostituzione di Mac OS X per init - Mac OS X mi confonde.

Comunque, setenv PATH "$PATH:/more/paths:/and/more/paths" funzionerà (tcsh) e l'equivalente Shell bourn è export PATH="$PATH:/more/paths:/and/more/paths" - Non ho idea di come launchd sia correlato a una particolare Shell.

Penso di aver fatto più domande, quindi ho risposto =)

0
Xerxes

Non sono sicuro che launchd lo accetti, ma prova:

setenv PATH "$ PATH:/my/path"
0
user1686