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

13

Ho provato tutti i metodi che ho sentito per l'impostazione di variabili d'ambiente su OS X 10.8 ma nessuno di essi sembra funzionare.

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

#!/bin/bash
set|grep PATH

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

  • /etc/paths e /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (binario plist fatto come raccomandato)
  • in esecuzione launchctl setenv PATH $PATH dalla riga di comando, questo doveva aggiornare PATH per le applicazioni della GUI, almeno per la sessione corrente. Indovina cosa, senza modifiche.

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

    
posta sorin 11.09.2012 - 17:23
fonte

4 risposte

8

Con Mountain Lion /etc/launchd.conf è dove devi impostare le applicazioni della GUI Path. Ricorda che non è un file di script; supporta solo launchctl comandi, quindi dovresti scrivere qualcosa come:

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

Si noti inoltre che non supporta le sostituzioni delle variabili di ambiente della shell (come $PATH ), quindi sarà necessario impostare ogni percorso che si desidera includere. È consigliabile mantenere i percorsi originali che hai menzionato ( /usr/bin:/bin:/usr/sbin:/sbin ).

Dovrai riavviare dopo aver modificato (o creato) il file affinché le modifiche abbiano effetto.

    
risposta data 04.12.2012 - 15:18
fonte
3

Funziona se chiami l'app della GUI dal Terminale:

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

Non proprio bello o comodo ma fa il lavoro se necessario.

    
risposta data 11.09.2012 - 22:02
fonte
2

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

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

Quindi salva l'intero oggetto dove vuoi, e se hai bisogno di eseguire YourApplicationHere , apri invece la "applicazione di automazione" creata.

L'ho provato con Terminal come YourApplicationHere e visto con launchctl export che FOO è stato effettivamente impostato su bar . Spero che funzioni anche per gli altri.

Infine, se usi questo soluzione per le variabili d'ambiente, invece di digitare la roba launchctl nello script della shell, puoi semplicemente chiamare /Users/Shared/conflaunchd.sh (che devi prima recuperare insieme al file che descrive le variabili).

    
risposta data 01.10.2012 - 12:04
fonte
-1

Presumibilmente, launchctl fornisce PATH alle app della GUI. Per impostare il percorso a quello del percorso della shell, aggiungi quanto segue al file rc della shell dopo aver impostato il percorso:

launchctl setenv PATH $PATH
    
risposta data 11.09.2012 - 22:25
fonte

Leggi altre domande sui tag