Come modificare la variabile d'ambiente PATH in OS X 10.8 Mountain Lion che sarà visibile alle applicazioni della GUI? [duplicare]


14

Ho provato tutti i metodi di cui ho sentito parlare per impostare le variabili di ambiente su OS X 10.8, ma nessuna sembra funzionare.

Per testare, esegui uno script bash all'interno di un'applicazione gui come Eclipse o IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Cose che ho testato e che non funzionano anche dopo il riavvio:

  • /etc/paths e /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (plist binario realizzato come raccomandato)
  • in esecuzione launchctl setenv PATH $PATHdalla riga di comando, questo doveva aggiornare il PERCORSO per le app della GUI, almeno per la sessione corrente. Indovina cosa, nessun cambiamento.

Sembra che PATH sia sempre PATH=/usr/bin:/bin:/usr/sbin:/sbinper le app GUI.


Stai bene con una soluzione che imposta il percorso bash o hai davvero bisogno di cambiare il valore di launchd del percorso base per tutti i processi?
— bmike

Devo cambiare il PERCORSO utilizzato dalle app della GUI, per terminal / bash / ... Ho già un grande set di soluzioni funzionanti.
— sorin,

Non so perché eclipse e altri non supportino solo le variabili di ambiente di runtime, quindi ogni sviluppatore Java su Mac non deve preoccuparsi di impostare il percorso o reperire le variabili desiderate in ogni progetto.
— bmike

Risposte:


8

Con Mountain Lion /etc/launchd.confè dove impostare il percorso delle applicazioni della GUI. Ricorda che non è un file di script; supporta solo i launchctlcomandi, quindi dovresti scrivere qualcosa del tipo:

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

Si noti inoltre che non supporta le sostituzioni di variabili di ambiente di shell (come $PATH), quindi è necessario impostare ogni percorso che si desidera includere. È una buona idea mantenere i percorsi originali che hai citato ( /usr/bin:/bin:/usr/sbin:/sbin).

Dovrai riavviare dopo aver modificato (o creato) il file per rendere effettive le modifiche.


Questo ha funzionato per me in 10.8.2 per impostare un PERCORSO utilizzabile con Keyboard Maestro.
— TJ Luoma,

La pagina man dice che puoi usare $ HOME / .launchd.conf ma che non ha funzionato per me. Utilizzando /etc/launchd.conf ha fatto. Sono il 10.8.4
— pedz,

Per me non funziona:-bash: setenv: command not found
— Colas,

Se qualcuno era confuso come Colas, setenvè un launchctlcomando, quindi lo usi come launchctl setenv.
— Jon Shier,

3

Funziona se chiami l'app GUI dal Terminale:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

inserisci qui la descrizione dell'immagine

Non molto carino o comodo ma fa il lavoro se necessario.


Tra poco NO MODO. Non sono disposto a farlo, funzionerà solo qualche volta. L'app può essere avviata anche quando fai clic su un file.
— sorin,

2
Come ho già detto, non è davvero bello, ma potrebbe funzionare fino a quando Apple non risolverà il problema (perché dovrebbe essere possibile con launchctl).
— Nohillside

2

Ho preparato un'altra soluzione, ispirata a patrix qui , che si spera sia un po 'meno dolorosa. Apri Automator, seleziona un'applicazione come destinazione e scegli Execute Shell script(o come si chiama, in tedesco è "Shell-Skript ausführen" come si può vedere sopra) come azione. Nello script, basta digitare

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Quindi salva il tutto dove vuoi e, se devi eseguire YourApplicationHere , apri invece l'applicazione "automator" creata.

Ho provato questo con Terminalcome YourApplicationHere , e ha visto con launchctl exportche FOO era davvero messo al bar . Spero che funzioni anche per gli altri.

Infine, se usi questa soluzione per le tue variabili di ambiente, invece di digitare le launchctlcose nello script della shell, potresti semplicemente chiamare /Users/Shared/conflaunchd.sh(che devi inventare prima, insieme al file che descrive le variabili).


-1

Presumibilmente, launchctlfornisce PATHal GUI Apps. Per impostare il percorso a quello del percorso della shell, aggiungere quanto segue al file rc della shell dopo aver impostato il percorso:

launchctl setenv PATH $PATH

1
Purtroppo questo non funziona :-(
— nohillside


Consentiamo risposte che fanno uno sforzo in buona fede per rispondere alla domanda. Consentiamo persino risposte sbagliate e lasciamo che la votazione parli per correttezza. Commentare senza renderlo personale è il modo migliore per creare un buco in una discussione difettosa piuttosto che scoraggiare i tentativi di risposta.
— bmike
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.