Como posso definir variáveis de ambiente para aplicativos de GUI no OS X Mavericks?

19

Eu tenho lutado para conseguir que um aplicativo seja executado no OS X Mavericks. Eu finalmente pude fazê-lo rodar perfurando o pacote .app e executando o script de shell diretamente. Parece que JAVA_HOME precisava ser definido. Então eu o configurei no meu .profile no shell e tudo funciona bem.

No entanto, se eu quiser simplesmente clicar no ícone no dock, ele não será executado. Meu palpite é que isso acontece porque o JAVA_HOME não está definido globalmente. Como não estou executando o aplicativo diretamente do shell, o OS X não sabe o que é JAVA_HOME. Apenas continua procurando.

Nas versões anteriores do OS X, parece que as variáveis de ambiente poderiam ser definidas para aplicativos GUI simplesmente adicionando-os ao /etc/launchd.conf. Este arquivo parece não existir em Mavericks. Como posso definir uma variável de ambiente global que funcionará para aplicativos GUI no Mavericks?

    
por user1015721 29.11.2013 / 23:19

1 resposta

24

/etc/launchd.conf nunca existiu por padrão, mas ainda funciona em 10.9.

  1. Executar por exemplo sudo nano /etc/launchd.conf .
  2. Adicione uma linha como setenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home . (Eu não sei o que JAVA_HOME deve realmente ser definido para.)
  3. Reinicie ou execute launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf e reinicie os processos.

launchctl export imprime as variáveis exportadas pelo processo userd launchd e sudo launchctl export imprime variáveis exportadas pelo processo raiz launchd.

Esse método também pode ser usado para definir um caminho padrão. Por exemplo, eu adicionei esta linha a /etc/launchd.conf :

setenv PATH /Users/lauri/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin

(usei /Users/lauri/bin em vez de ~/bin porque ~/bin seria /var/root/bin para programas executados como root.)

    
por 30.11.2013 / 03:54