Atualização: o link abaixo não possui uma resposta completa . Ter que definir o caminho ou a variável em dois lugares (um para GUI e outro para shell) é ruim.
Não é duplicado de : definindo variáveis de ambiente no OS X?
Vindo de um plano de fundo do Windows, onde é muito fácil definir e modificar variáveis de ambiente (basta ir em Propriedades do sistema> Avançado> Variáveis de ambiente), não parece ser tão simples no Mac OS 10.5. A maioria das referências diz que eu devo atualizar / etc / profile ou ~ / .profile. São equivalentes a Variáveis do sistema e Variáveis do usuário? Por exemplo, onde devo definir minha JAVA_HOME
variável?
EDITAR:
Quero poder acessar a variável do terminal, bem como um aplicativo como o Eclipse. Além disso, espero não ter que reiniciar / sair para fazer isso entrar em vigor.
fonte
Respostas:
Não há necessidade de duplicação. Você pode definir variáveis de ambiente usadas pelo launchd (e processos filhos, ou seja, qualquer coisa que você inicie no Spotlight) usando
launchctl setenv
.Por exemplo, se você deseja espelhar seu caminho atual no launchd depois de configurá-lo em
.bashrc
ou onde:As variáveis de ambiente não são atualizadas automaticamente nos aplicativos em execução. Você precisará reiniciar os aplicativos para obter as variáveis de ambiente atualizadas (embora você possa apenas definir variáveis em seu shell, por exemplo
PATH=whatever:you:want
; não há necessidade de reiniciar o terminal).fonte
launchctl setenv
parecem estar visíveis apenas para o usuário que está fazendo a alteração. Se eu definir uma variável como um usuário comum, ela não estará visível para o root (via sudo) e vice-versa.ps aux | grep launchd
mostrará isso. Verifique tambémman sudo
quais documentos quesudo
(por padrão) redefinem deliberadamente o ambiente - se vocêsudo -E
preservar o ambiente (incluindo variáveis definidaslaunchctl setenv
). Você tem uma aplicação real para isso, a propósito? Se sim, esse método funciona para você?Existem vários lugares onde você pode definir variáveis de ambiente.
~/.profile
: use isso para variáveis que você deseja definir em todos os programas iniciados no terminal (observe que, diferentemente do Linux, todos os shells abertos no Terminal.app são shells de login).~/.bashrc
: é invocado para shells que não são shells de login. Use isso para aliases e outras coisas que precisam ser redefinidas em subshells, não para variáveis de ambiente herdadas./etc/profile
: isso é carregado antes de ~ / .profile, mas é equivalente. Use-a quando desejar que a variável se aplique aos programas de terminal iniciados por todos os usuários na máquina (supondo que eles usem o bash).~/.MacOSX/environment.plist
: é lido por loginwindow no login. Aplica-se a todos os aplicativos, incluindo os da GUI, exceto os lançados pelo Spotlight na 10.5 (não na 10.6). Requer que você efetue logout e logon novamente para que as alterações entrem em vigor. Este arquivo não é mais suportado no OS X 10.8.launchd
instância do seu usuário : isso se aplica a todos os programas iniciados pelo usuário, GUI e CLI. Você pode aplicar as alterações a qualquer momento, usando osetenv
comando nolaunchctl
. Em teoria , você deve poder inserirsetenv
comandos~/.launchd.conf
elaunchd
lê-los automaticamente quando o usuário efetuar login, mas, na prática, o suporte a esse arquivo nunca foi implementado. Em vez disso, você pode usar outro mecanismo para executar um script no logon e fazer com que esse script seja chamadolaunchctl
para configurar olaunchd
ambiente./etc/launchd.conf
: é lido pelo launchd quando o sistema é inicializado e quando um usuário efetua login. Eles afetam todos os processos do sistema, porque o launchd é o processo raiz. Para aplicar alterações ao root launchd em execução, você pode canalizar os comandossudo launchctl
.As coisas fundamentais a entender são:
launchctl
; as variáveis atualizadas são herdadas por todos os novos processos que bifurcam a partir de então.Exemplo de configuração de uma variável de ambiente com o launchd:
Agora, inicie o aplicativo GUI que usa a variável e pronto!
Para contornar o fato de que
~/.launchd.conf
não funciona, você pode colocar o seguinte script em~/Library/LaunchAgents/local.launchd.conf.plist
:Então você pode colocar
setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE
dentro~/.launchd.conf
, e ele será executado a cada login.Observe que, ao canalizar uma lista de comandos para o launchctl dessa maneira, você não poderá definir variáveis de ambiente com valores que contenham espaços. Se você precisar fazer isso, você pode chamar launchctl da seguinte forma:
launchctl setenv MYVARIABLE "QUOTE THE STRING"
.Além disso, observe que outros programas executados no logon podem ser executados antes do agente de inicialização e, portanto, podem não ver as variáveis de ambiente que ele define.
fonte
~/.MacOSX/environment.plist
ao meu Leão, ele é lido e usado. Apenas testei. Na verdade, eu prefiro o .launchd.conf porque uso o painel de preferências RCenvironment para mantê-lo.~/.launchd.conf
trabalhar no 10.6.8 - ele não parece ter nenhum efeito. A página de manual também diz que este arquivo não é suportado no momento.~/.launchd.conf
ainda não é suportado e não funciona no OS X 10.8.3? Veja comoman launchd.conf
Acho que o OP está procurando uma solução simples, semelhante a janelas.
aqui vai você:
https://www.macupdate.com/app/mac/14617/rcenvironment
fonte
Você pode ler sobre o linux, que é bem parecido com o Mac OS X. Ou você pode ler sobre o BSD Unix, que é um pouco mais próximo. Na maioria das vezes, as diferenças entre Linux e BSD não chegam a muito.
/etc/profile
são variáveis de ambiente do sistema.~/.profile
são variáveis de ambiente específicas do usuário."onde devo definir minha variável JAVA_HOME?"
/etc/profile
?Geralmente, prefiro não mexer nas configurações de todo o sistema, mesmo sendo o único usuário. Prefiro editar minhas configurações locais.
fonte
Para aplicativos de GUI, você precisará criar e editar
~/.MacOSX/environment.plist
. Mais detalhes aqui . Você precisará sair para que estes entrem em vigor. Não tenho certeza se eles também afetam aplicativos iniciados no Terminal, mas presumo que afetariam.Para aplicativos iniciados no Terminal, você também pode editar o arquivo ~ / .profile.
fonte
Basta abrir o
~/.profile
arquivo, vianano
Terminal e digite lá:Salve este arquivo (cmd + X e Y). Depois disso, efetue logout / login novamente ou apenas abra uma nova guia no Terminal e tente usar sua nova variável.
POR FAVOR, não se esqueça de adicionar ": $ PATH" depois do que / you / want, caso contrário, você apagará todos os caminhos na variável PATH, que existiam antes disso.
fonte
Sincronize variáveis de ambiente do OS X para aplicativos de linha de comando e GUI a partir de uma única fonte com osx-env-sync .
Também postei uma resposta para uma pergunta relacionada aqui .
fonte
Se você deseja alterar variáveis de ambiente permanentemente no macOS, defina-as
/etc/paths
. Observe que esse arquivo é somente leitura por padrão; portanto, você precisará chmod para obter permissões de gravação.fonte
/usr/bin/local
nesse arquivo, mesmo sem modificá-lo, era assim por padrão e, no entanto, meus aplicativos de GUI veem apenas/usr/bin:/bin:/usr/sbin:/sbin
. Eu reiniciei muitas vezes.cat /etc/paths/
?Para usuários do 2020 Mac OS X Catalina em 2020:
Esqueça outras respostas inúteis, aqui apenas duas etapas são necessárias:
Crie um arquivo com a convenção de nomenclatura: priority-appname. Em seguida, copie e cole o caminho que você deseja adicionar
PATH
.Por exemplo,
80-vscode
com conteúdo/Applications/Visual Studio Code.app/Contents/Resources/app/bin/
no meu caso.Mova esse arquivo para
/etc/paths.d/
. Não se esqueça de abrir uma nova guia (nova sessão) no Terminal e digiteecho $PATH
para verificar se o seu caminho foi adicionado!Aviso: este método anexa apenas o seu caminho
PATH
.fonte