Como alguém configura variáveis de ambiente no Mac OS X para que elas estejam disponíveis para aplicativos da GUI sem usar ~ / .MacOSX / environment.plist ou ganchos de login (uma vez que estão obsoletos )?
macos
environment-variables
launchd
launchctl
Percival Ulysses
fonte
fonte
Respostas:
No Mountain Lion, toda a edição
/etc/paths
e/etc/launchd.conf
não surte efeito!Os fóruns de desenvolvedores da Apple dizem:
Então, editei diretamente o aplicativo
Info.plist
(clique com o botão direito do mouse em "AppName.app" (neste caso, SourceTree) e depois em "Show package contents
")e adicionou um novo par de chave / dict chamado:
(consulte: Documentação LaunchServicesKeys na Apple )
agora o aplicativo (no meu caso, SourceTree) usa o caminho especificado e trabalha com o git 1.9.3 :-)
PS: É claro que você deve ajustar a entrada Caminho às suas necessidades específicas de caminho.
fonte
Info.plist
entrarem em vigor.A solução usa a funcionalidade de
launchctl
, combinada com um Launch Agent para imitar os ganchos de logon antigos. Para outras soluções usando a loja delaunchd
, consulte esta comparação . O agente de inicialização usado aqui está localizado em / Library / LaunchAgents / :Uma coisa importante é a chave RunAtLoad, para que o agente de inicialização seja executado o mais rápido possível. O trabalho real é feito no script de shell /Users/Shared/conflaunchd.sh , que lê ~ / .conf.launchd e o alimenta para
launchctl
:Observe a chamada
path_helper
para obter o PATH configurado corretamente. Finalmente, ~ / .conf.launchd se parece com issoEstes são
launchctl
comandos, veja sua página de manual para mais informações. Funciona bem para mim (devo mencionar que ainda sou um cara do Snow Leopard), aplicativos de GUI como o texstudio e o TeXShop podem ver minha própria árvore de tex. Coisas que podem ser melhoradas:O script de shell tem um
#filename="$1"
nele. Isso não é acidental, pois o nome do arquivo deve ser alimentado no script pelo agente de inicialização como argumento, mas isso não funciona.Como mencionado aqui (em alemão e por trás de um paywall!), É possível colocar o script no próprio agente de lançamento.
Não tenho certeza de quão segura é essa solução, pois é usada
eval
com as seqüências fornecidas pelo usuário.Acho que lembro que a definição de MANPATH usando esse método não funcionou bem, mas não tenho certeza.
Deve-se mencionar que a Apple pretendia uma abordagem um pouco semelhante colocando coisas no ∼ / launchd.conf , mas atualmente não há suporte para essa data e sistema operacional (consulte a página de
launchd.conf
). Eu acho que coisas como globbing não funcionariam como na proposta. E, é claro, é possível colocar esses arquivos em qualquer outro lugar, exceto no agente de inicialização que deve residir em / Library / LaunchAgents / ou ~ / Library / LaunchAgents / .Por fim, devo mencionar as fontes que usei como informações sobre os agentes de lançamento: 1 , 2 , 3 , 4 .
Atualização : isso não funciona na versão 10.8 no momento. As soluções alternativas por aplicativo são descritas aqui e aqui .
fonte
export PATH=.:"$(launchctl getenv PATH)"
em ~ / .bash_profile (da mesma forma para outros shells). Isso é possível, poispath_helper
é chamado no script de shell. Para mais detalhes sobre a variável PATH no OS X, verifique esta resposta .A resposta fornecida por @flori funciona para mim no Maverick, desde que eu execute os seguintes comandos no Terminal após alterar o arquivo plist
fonte
A resposta fornecida por @ percival-ulysses funciona para mim no Mavericks 10.9 com a seguinte pequena alteração: edite o script /Users/Shared/conflaunchd.sh antes
exit 0
e adicione as linhaspara reiniciar o Dock e a barra de menus. Depois disso, os aplicativos iniciados no Dock ou no Spotlight herdarão o PATH correto. Se você usar o Finder para iniciar os aplicativos críticos do PATH, também
killall Finder
poderá ser adicionado.No
.bash_profile
eu uso a linhapara definir o PATH para o Terminal, desta forma o PATH é controlado a partir do mesmo local, o arquivo ~ / .conf.launchd .
fonte
Outra opção é usar
/etc/launchd.conf
. Por exemplo, alterei o padrãoPATH
adicionando esta linha a/etc/launchd.conf
:Você pode aplicar alterações
/etc/launchd.conf
reiniciando ou executandolaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
e finalizando e reiniciando os processos.As configurações se
/etc/launchd.conf
aplicam ao processo de inicialização raiz e aos processos de inicialização por usuário. As variáveis de ambiente definidas comsetenv
in/etc/launchd.conf
são mostradas por ambossudo launchctl export
elaunchctl export
.fonte