Parece que o launchd.conf
que não carrega mais minha variável de ambiente. Alguém mais notou aquilo?
Existe outra solução para definir permanentemente variáveis de ambiente?
Parece que o launchd.conf
que não carrega mais minha variável de ambiente. Alguém mais notou aquilo?
Existe outra solução para definir permanentemente variáveis de ambiente?
Respostas:
Crie um
environment.plist
arquivo~/Library/LaunchAgents/
com este conteúdo:Você pode adicionar muitos
launchctl
comandos dentro do<string></string>
bloco.O
plist
será ativado após a reinicialização do sistema. Você também pode usarlaunchctl load ~/Library/LaunchAgents/environment.plist
para iniciá-lo imediatamente.[Editar]
A mesma solução também funciona em El Capitan.
O Xcode 7.0+ não avalia variáveis de ambiente por padrão. O comportamento antigo pode ser ativado com este comando:
defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
[Editar]
Existem algumas situações em que isso não funciona. Se o computador for reiniciado e a opção "Reabrir janelas ao fazer login novamente" estiver selecionada, as janelas reabertas talvez não vejam as variáveis (talvez elas estejam abertas antes da execução do agente). Além disso, se você efetuar login via ssh, as variáveis não serão definidas (portanto, será necessário configurá-las em ~ / .bash_profile). Finalmente, isso não parece funcionar para a PATH em El Capitan e Sierra. Isso precisa ser definido via 'launchctl config user path ...' e em / etc / caminhos.
fonte
UseSanitizedBuildSystemEnvironment
).[ Resposta original ]: Você ainda pode usar
launchctl setenv variablename value
para definir uma variável para que seja escolhida por todos aplicativos (aplicativos gráficos iniciados pelo Dock ou Spotlight, além dos iniciados pelo terminal).Obviamente, você não vai querer fazer isso toda vez que fizer login.
[ Editar ]: Para evitar isso, inicie
AppleScript Editor
, digite um comando como este:(Use várias linhas se desejar definir várias variáveis)
Agora salve (
⌘
+s
) como formato de arquivo: Aplicativo . Por fim, abraSystem Settings
→ Usuários e grupos → Itens de login e adicione seu novo aplicativo.[ Resposta original ]: Para contornar este local, todas as variáveis que você deseja definir em um breve script de shell, consulte esta resposta anterior sobre como executar um script no login do MacOS . Dessa forma, o script será chamado quando o usuário efetuar login.
[ Editar ]: Nenhuma solução é perfeita, pois as variáveis serão definidas apenas para esse usuário específico, mas espero / acho que isso pode ser tudo o que você precisa.
Se você tiver vários usuários, poderá definir manualmente um Item de Login para cada um deles ou colocar uma cópia de com.user.loginscript.plist em cada um de seus Library / LaunchAgents locais diretórios , apontando para o mesmo script de shell.
Concedido, nenhuma dessas soluções alternativas é tão conveniente quanto /etc/launchd.conf .
[ Edição adicional ]: Um usuário abaixo menciona que isso não funcionou para ele. No entanto, eu testei em várias máquinas Yosemite e funciona para mim. Se você estiver tendo um problema, lembre-se de que precisará reiniciar os aplicativos para que isso entre em vigor. Além disso, se você definir variáveis no terminal via ~ / .profile ou ~ / .bash_profile , elas substituirão as coisas definidas via launchctl setenv para aplicativos iniciados no shell .
fonte
É possível definir variáveis de ambiente no Mac OS X 10.10 Yosemite com 3 arquivos + 2 comandos.
Arquivo principal com definição de variáveis de ambiente:
Definição de serviço para carregar variáveis de ambiente para aplicativos do usuário (terminal, IDE, ...):
A mesma definição de serviço para aplicativos de usuário raiz:
E, finalmente, devemos registrar estes serviços:
O que temos:
Questões / problemas:
Para que suas variáveis env sejam corretamente tomadas pelos aplicativos após a reinicialização do sistema, você precisará:
Isso acontece porque a Apple nega a ordem explícita dos serviços carregados, portanto as variáveis env são registradas paralelamente ao processamento da "fila de reabertura".
Mas, na verdade, reinicializo meu sistema apenas várias vezes por ano (em grandes atualizações), portanto não é grande coisa.
fonte
JAVA_HOME
), mas não para aPATH
variável (veja minha pergunta em perguntar diferente ).launchd
, mas não seria possível carregar esses Daemons na inicialização (ou seja, antes do login)? Isso deve contornar todos os problemas que você menciona.Citado de
Apple Developer Relations 10-Oct-2014 09:12 PM
Solução:
fonte
/Library/LaunchDaemons
e, em vez de dizerlaunchctl
para executar olimit
comando, diga para executar osetenv
comando comPATH
uma string de caminho como argumentos.launchd
deve buscá-lo automaticamente na inicialização e se auto-modificar quase imediatamente.<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
Aqui estão os comandos para restaurar o comportamento antigo:
Agora você pode especificar comandos como
setenv JAVA_HOME /Library/Java/Home
em/etc/launchd.conf
.Verificado em El Capitan.
fonte
O que funcionou para mim (inspirado nos agradecimentos de aax):
Cole isso em /Library/LaunchDaemons/com.apple.launchd.limit.plist e reinicie:
Se você precisar passo a passo:
⌘+v
). Isso forçará o limite para 16384 arquivos por processo e 16384 arquivos no totalesc
, em seguida,:wq
Espero que isso tenha ajudado.
fonte
Você pode tentar https://github.com/ersiner/osx-env-sync . Ele lida com aplicativos de linha de comando e GUI de uma única fonte e funciona com a versão mais recente do OS X (Yosemite).
Você pode usar substituições de caminho e outros truques de shell, já que o que você escreve é um script bash regular a ser originado pelo bash em primeiro lugar. Sem restrições .. (Verifique a documentação do osx-env-sync e você entenderá como isso ocorre).
Respondi a uma pergunta semelhante aqui, onde você encontrará mais.
fonte
A solução é adicionar sua variável a
/etc/profile
. Então tudo funciona como esperado! Claro que você DEVE fazê-lo como usuário root com o sudo nano / etc / profile. Se você editá-lo de qualquer outra maneira, o sistema irá reclamar com um perfil / etc / danificado, mesmo que você altere as permissões para root.fonte
Eu adicionei as variáveis no ~ / .bash_profile da seguinte maneira. Após concluir, reinicie / efetue logout e efetue login
NOTA: sem reiniciar / sair e fazer login, você pode aplicar essas alterações usando;
fonte