Impostazione della variabile di ambiente PATH a livello di sistema in Mavericks

37

Nelle precedenti versioni del sistema operativo si poteva impostare la variabile d'ambiente PATH a livello di sistema in /etc/launchd.conf per renderla disponibile per tutte le app (non solo sulla riga di comando).

In Mavericks questo sembra non essere più usato.

Esiste un'altra tecnica per fare ciò nei mavericks?

    
posta Tom 23.10.2013 - 18:50
fonte

8 risposte

42

Yosemite

/etc/launchd.conf non è più supportato in 10.10. Guarda man launchctl :

The /etc/launchd.conf file is no longer consulted for subcommands to run during early boot time; this functionality was removed for security considerations.

Ora puoi ad esempio salvare questo plist come ~/Library/LaunchAgents/my.startup.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Il comando launchctl setenv viene eseguito come utente, quindi si applica solo ai processi avviati nel dominio utente.

Questo metodo non si applica alle applicazioni che vengono riaperte all'accesso se "Riapri finestre quando si effettua il login" è selezionato.

Maverick e precedenti

In 10.9 e precedenti, puoi ad esempio eseguire

echo setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin|sudo tee -a /etc/launchd.conf

e quindi riavvia per applicare le modifiche.

Altri metodi

/etc/paths e /etc/paths.d/ si applicano solo (o principalmente) alle shell. Le linee in /etc/paths e /etc/paths.d/* vengono aggiunte al percorso da path_helper , che viene eseguito da /etc/profile , /etc/zshenv e /etc/csh.login . Non conosco programmi diversi dalle shell che considerano /etc/paths o /etc/paths.d/ .

~/.MacOSX/environment.plist ha smesso di funzionare in 10.8.

    
risposta data 25.10.2013 - 17:48
fonte
12

C'è un modo molto più semplice. Inserisci un file di testo nella cartella /etc/paths.d/ . In questo file di testo, inserisci il percorso AND AND a newline. Il modo migliore è creare un nuovo file per ogni percorso.

Sul mio sistema, c'è un file chiamato MySQL con il testo '/ usr / local / mysql / bin' e una nuova riga.

    
risposta data 24.10.2013 - 12:28
fonte
3

Potresti essere in grado di impostare le variabili di ambiente nel file /etc/launchd-user.conf ...

In Mavericks, sono stato in grado di configurare una variabile di ambiente nel file utilizzando la linea:

setenv TEST test

Dopo un nuovo avvio, viene impostato $TEST da /etc/launchd-user.conf.

Modifica

È possibile che la sintassi del file in /etc/launchd.conf non sia valida. Puoi pubblicare il contenuto di quel file per l'esame?

Da quello che sto vedendo, l'impostazione della variabile PATH in /etc/launchd.conf funziona normalmente. Tuttavia, launchd non esegue alcuna espansione dei parametri . Pertanto, se hai una voce come setenv PATH $PATH:/usr/local/bin , il tuo percorso risultante sarà impostato su " $PATH:/usr/local/bin " (nota: non il valore di PATH, ma il testo "$ PATH")

    
risposta data 23.10.2013 - 19:56
fonte
0

sulla mia installazione di Mavericks, l'aggiunta di "setenv PATH blablabla" a /etc/launchd.conf non ha funzionato dopo il riavvio

così ho aggiunto il mio nuovo percorso alla fine di / etc / paths, che ha funzionato.

    
risposta data 04.11.2013 - 03:07
fonte
0

Ho trovato che setenv PATH funziona ancora per me per Terminal e applicazioni, ma ha rotto gli script di shell, lanciato direttamente facendo clic o Apri con in Terminale da, ad esempio, Finder. È molto strano. Altre variabili di ambiente impostate in /etc/launchd.conf work.

Per correggerlo direttamente per gli script della shell, ho duplicato l'impostazione PATH in ~/.bash_profile .

    
risposta data 07.03.2014 - 17:28
fonte
0

La modifica di /etc/paths.d o l'utilizzo di .bash_profile non ha funzionato per me, tuttavia come suggerito da qualcun altro (in realtà sono venuto qui per sviare la sua risposta, ma non sono riuscito a trovarlo di nuovo ?!), ho modificato /etc/paths che funziona per me

Nel mio caso, ho aggiunto Android-tool adb e android ai comandi del terminale con riferimento ai loro percorsi sdk ( adb è stato spostato in un'altra directory al giorno d'oggi) che assomiglia a

/usr/local/bin
...
/Applications/adt-bundle-mac/sdk/platform-tools  //new entries
/Applications/adt-bundle-mac/sdk/tools
    
risposta data 22.05.2014 - 11:50
fonte
0

SWEET, aggiungendo che XML a ~ / Library / LaunchAgents / setenv.SVN.plist ha permesso a BBEdit di usare i binari di subversione che ho installato in / opt.

<clip>
<string>launchctl setenv PATH /opt/subversion/bin:$PATH</string>
<clip>
    
risposta data 22.05.2015 - 06:26
fonte
-1

Aggiungi semplicemente il percorso 'bin' (il percorso che vuoi aggiungere) al file / etc / paths - riavvia o riaccendi !!!

sudo vi /etc/paths 
(create a file (paths file) if it does't exist, I am using 'vi' editor, you can use your own as super user )
then, add your bin directory path like below 

/usr/local/mysql/bin
/usr/local/apache-ant-1.9.3/bin
/usr/local/gradle-1.11/bin

salva il file e riaccendi ... spero che questo aiuti

    
risposta data 07.11.2013 - 15:57
fonte

Leggi altre domande sui tag