Como alterar a variável de ambiente PATH para o OS X 10.8 Mountain Lion que ficará visível para aplicativos GUI? [duplicado]

14

Tentei todos os métodos que ouvi falar para definir variáveis ​​de ambiente no OS X 10.8, mas nenhum deles parece funcionar.

Para testar, execute um script bash de dentro de um aplicativo GUI como Eclipse ou IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Coisas que testei e que não estão funcionando mesmo após a reinicialização:

  • /etc/paths e /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (lista binária feita conforme recomendado)
  • executando a launchctl setenv PATH $PATHpartir da linha de comando, isso deveria atualizar o PATH para aplicativos da GUI, pelo menos para a sessão atual. Adivinha o quê, nenhuma mudança.

Parece que PATH é sempre PATH=/usr/bin:/bin:/usr/sbin:/sbinpara aplicativos GUI.

sorin
fonte
Você concorda com uma solução que define o caminho do bash ou realmente precisa alterar o valor do launchd do caminho base para todos os processos?
bmike
Preciso alterar o PATH usado pelos aplicativos da GUI, para terminal / bash / ... Eu já tenho um grande conjunto de soluções em funcionamento.
sorin
Não sei por que o eclipse e outros não suportam apenas variáveis ​​de ambiente de tempo de execução, portanto, todos os desenvolvedores java no Mac não precisam se preocupar em definir o caminho ou buscar as variáveis ​​desejadas em cada projeto.
bmike

Respostas:

8

Com o Mountain Lion /etc/launchd.confé onde você deve definir o caminho dos aplicativos da GUI. Lembre-se de que não é um arquivo de script; Ele suporta apenas launchctlcomandos, então você deve escrever algo como:

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

Observe também que ele não suporta substituições de variáveis ​​de ambiente do shell (como $PATH), portanto você terá que definir todos os caminhos que deseja incluir. É uma boa ideia manter os caminhos originais que você mencionou ( /usr/bin:/bin:/usr/sbin:/sbin).

Você precisará reiniciar após alterar (ou criar) o arquivo para que as alterações entrem em vigor.

João Campos
fonte
Isso funcionou para mim no 10.8.2 para definir um PATH que poderia ser usado com o Keyboard Maestro.
TJ Luoma
A página de manual diz que você pode usar o $ HOME / .launchd.conf, mas isso não funcionou para mim. O uso do /etc/launchd.conf fez. Estou no 10.8.4
pedz
Não funciona para mim:-bash: setenv: command not found
Colas
Se alguém ficou confuso como Colas, setenvé um launchctlcomando, então você o usa como launchctl setenv.
Jon Shier 14/05
3

Funciona se você chamar o aplicativo GUI do Terminal:

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

insira a descrição da imagem aqui

Não é realmente agradável ou confortável, mas faz o trabalho, se necessário.

nohillside
fonte
Logo de maneira nenhuma. Eu não estou disposto a fazer isso, só vai funcionar algumas vezes. O aplicativo também pode ser iniciado quando você clica em um arquivo.
sorin
2
Como eu disse, não é muito bom, mas pode funcionar até que a Apple resolva o problema (porque deve ser possível com o launchctl).
nohillside
2

Eu criei outra solução, inspirada na patrix aqui , que espero que seja um pouco menos dolorosa. Abra Automator, selecione um aplicativo como destino e escolha Execute Shell script(ou como ele é chamado, em alemão, é "Shell-Skript ausführen", como pode ser visto acima)) como ação. No script, basta digitar

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

Em seguida, salve a coisa toda onde quiser e, se precisar executar o YourApplicationHere , abra o "aplicativo de automação" criado.

Eu testei isso Terminalcomo YourApplicationHere e vi com launchctl exportesse FOO que estava realmente definido para barrar . Espero que funcione para os outros também.

Por fim, se você usar esta solução para suas variáveis ​​de ambiente, em vez de digitar as launchctlcoisas no shell script, basta chamar /Users/Shared/conflaunchd.sh(que você deve criar primeiro, junto com o arquivo que descreve as variáveis).

Percival Ulysses
fonte
-1

Supostamente, launchctlfornece PATHpara GUI Apps. Para definir o caminho para o caminho do shell, adicione o seguinte ao seu arquivo shell rc após definir o caminho:

launchctl setenv PATH $PATH
ismail
fonte
1
Infelizmente isso não funciona :-(
nohillside
Permitimos respostas que façam um esforço de boa fé para resolver a questão. Nós até permitimos respostas erradas e deixamos a votação falar pela correção. Comentar sem torná-lo pessoal é a melhor maneira de abrir um argumento defeituoso, em vez de desencorajar tentativas de resposta.
bmike