Definir variables ​​de ambiente no Mac OS X Lion

Quando alguém diz “edite seu arquivo .plist” ou “seu .profile” ou “.bash_profile” etc, isso apenas me confunde. Eu não tenho idéia de onde esses arquivos são, como criá-los se eu tiver que fazer isso, etc, e também por que parece haver tantos diferentes (por quê? Eles fazem coisas diferentes?)

Então, alguém poderia por favor explicar pacientemente a um usuário anterior do Windows (querendo desesperadamente se familiarizar mais com o agradável mundo do OS X, inicialmente desconcertante) como fazer isso passo a passo?

Eu preciso que as variables ​​sejam configuradas tanto para aplicativos de GUI quanto para aplicativos de linha de comando, e no momento é para um script ant que precisa das variables, mas provavelmente haverá outras necessidades também.

Por favor, note que eu também tenho Leão, já que muitas das respostas que você recebe no Google parecem estar desatualizadas para o Leão …

Observe também que praticamente não tenho experiência com o Terminal. Estou disposto a aprender, mas por favor explique para um novato …

    Primeiro, uma coisa a reconhecer sobre o OS X é que ele é construído no Unix. É aí que entra o .bash_profile. Quando você inicia o aplicativo Terminal no OS X, você obtém um shell bash por padrão. O shell bash vem do Unix e, quando é carregado, executa o script .bash_profile. Você pode modificar esse script para o usuário alterar suas configurações. Este arquivo está localizado em:

    ~/.bash_profile 

    Atualização para Mavericks

    OS X Mavericks não usa o environment.plist – pelo menos não para os aplicativos do Windows OS X. Você pode usar a configuração launchd para aplicativos em janelas. O .bash_profile ainda é suportado, pois faz parte do shell bash usado no Terminal.

    Leão e Leão da Montanha Apenas

    Os aplicativos com janelas do OS X recebem variables ​​de ambiente do seu arquivo environment.plist. Isso é provavelmente o que você quer dizer com o arquivo “.plist”. Este arquivo está localizado em:

     ~/.MacOSX/environment.plist 

    Se você fizer uma alteração em seu arquivo environment.plist, os aplicativos do Windows OS X, incluindo o aplicativo Terminal, terão essas variables ​​de ambiente definidas. Qualquer variável de ambiente que você definir em seu .bash_profile afetará apenas seus shells bash.

    Geralmente eu só configuro variables ​​em meu arquivo .bash_profile e não altero o arquivo .plist (ou o arquivo launchd no Mavericks). A maioria dos aplicativos com janelas do OS X não precisa de nenhum ambiente personalizado. Somente quando um aplicativo realmente precisa de uma variável de ambiente específica eu mudo o environment.plist (ou o arquivo launchd no Mavericks).

    Parece que o que você quer é alterar o arquivo environment.plist, em vez do .bash_profile.

    Uma última coisa, se você procurar por esses arquivos, acho que não os encontrará. Se bem me lembro, eles não estavam na minha instalação inicial do Lion.

    Edit: Aqui estão algumas instruções para criar um arquivo plist.

    1. Abra o Xcode
    2. Selecione Arquivo -> Novo -> Novo Arquivo …
    3. No Mac OS X, selecione Recursos
    4. Escolha um arquivo plist
    5. Siga o resto dos prompts

    Para editar o arquivo, você pode clicar com o botão Control para obter um menu e selecionar Adicionar linha. Você pode então adicionar um par de valores-chave. Para variables ​​de ambiente, a chave é o nome da variável de ambiente e o valor é o valor real para essa variável de ambiente.

    Uma vez que o arquivo plist é criado, você pode abri-lo com o Xcode para modificá-lo sempre que desejar.

    Seu “.profile” ou “.bash_profile” são simplesmente arquivos que estão presentes na sua pasta “home”. Se você abrir uma janela do Finder e clicar no nome da sua conta no painel Favoritos … você não os verá. Se você abrir uma janela do Terminal e digitar “ls” para listar os arquivos … você ainda não os verá. Mas você pode encontrá-los usando “ls -a” no terminal. Ou se você abrir o seu editor de texto favorito (digamos, o TextEdit, já que ele vem com o OS X), abra File-> Open e pressione Command + Shift +. e clique no nome da sua conta (pasta pessoal), você também os verá. Se você não vê-los, você pode simplesmente criar um no seu editor de texto favorito.

    Agora, adicionar variables ​​de ambiente é bastante simples e notavelmente similar às janelas conceitualmente. Em seu .profile, apenas adicione um por linha, o nome da variável e seu valor da seguinte forma:

     export JAVA_HOME=/Library/Java/Home export JRE_HOME=/Library/Java/Home 

    etc.

    Se você está modificando sua variável “PATH”, certifique-se de include o PATH padrão do sistema que já foi definido para você:

     export PATH=$PATH:/path/to/my/stuff 

    Agora aqui está a parte peculiar, você pode abrir uma nova janela do Terminal para que as novas variables ​​entrem em vigor, ou você precisará digitar “.profile” ou “.bash_profile” para recarregar o arquivo e ter o conteúdo aplicado para o ambiente atual do seu Terminal.

    Você pode verificar se suas alterações entraram em vigor usando o comando “set” no seu Terminal. Apenas digite “set” (ou “set | more” se você preferir uma lista paginada) e tenha certeza de que o que você adicionou ao arquivo está lá.

    Quanto à adição de variables ​​de ambiente a aplicativos GUI, normalmente isso não é necessário e gostaria de saber mais sobre o que você está especificamente tentando fazer para melhor lhe dar uma resposta.

    Aqui está um pouco mais informações especificamente sobre a variável PATH no Lion OS 10.7.x:

    Se você precisar definir o PATH globalmente, o PATH será criado pelo sistema na seguinte ordem:

    1. Analisando o conteúdo do arquivo /private/etc/paths , um caminho por linha
    2. Analisando o conteúdo da pasta /private/etc/paths.d . Cada arquivo nessa pasta pode conter vários caminhos, um caminho por linha. A ordem de carregamento é determinada primeiro pelo nome do arquivo e, em seguida, pela ordem das linhas no arquivo.
    3. Uma setenv PATH em /private/etc/launchd.conf , que irá append esse caminho ao caminho já construído em # 1 e # 2 (você não deve usar $ PATH para referenciar a variável PATH que foi construída até agora). Mas, definir o PATH aqui é completamente desnecessário, dadas as outras duas opções, embora este seja o lugar onde outras variables ​​de ambiente globais podem ser definidas para todos os usuários.

    Esses caminhos e variables ​​são herdados por todos os usuários e aplicativos, portanto, eles são verdadeiramente globais – efetuando logout e não redefinindo esses caminhos – eles são criados para o sistema e são criados antes que qualquer usuário tenha a oportunidade de efetuar login, Por isso, alterações nesses itens exigem que uma reboot do sistema entre em vigor.

    BTW, uma instalação limpa do OS 10.7.x Lion não tem um environment.plist que eu possa encontrar, por isso pode funcionar, mas também pode ser preterido.

     echo $PATH 

    imprime o valor do caminho atual

    Então faça o vim ~/.bash_profile e escreva

     export PATH=$PATH:/new/path/to/be/added 

    aqui você está anexando ao caminho antigo, então preserva o caminho antigo e adiciona seu novo caminho a ele

    então faça

     source ~/.bash_profile 

    isso irá executá-lo e adicionar o caminho

    então verifique novamente com

     echo $PATH 

    Infelizmente nenhuma dessas respostas resolveu o problema específico que eu tinha.

    Aqui está uma solução simples sem ter que mexer com bash . No meu caso, foi ficando gradle para trabalhar (para o Android Studio ).

    A propósito, essas etapas estão relacionadas ao OSX (Mountain Lion 10.8.5)

    • Abra o Terminal.
    • Execute o seguinte comando:

      sudo nano /etc/paths (ou sudo vim /etc/paths para vim)

      nano

    • Vá até o final do arquivo e digite o caminho que você deseja adicionar.
    • Hit control-x para sair.
    • Digite ‘Y’ para salvar o buffer modificado.
    • Abra uma nova janela de terminal e digite:

      echo $PATH

    Você deve ver o novo caminho anexado ao final do PATH

    Eu tenho esses detalhes deste post:

    http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

    Espero que possa ajudar outra pessoa

    Explicação simplificada

    Essa postagem / pergunta é meio antiga, então responderei a uma versão simplificada para usuários do OS X Lion. Por padrão, o OSX Lion não possui nenhum dos seguintes arquivos:

    • ~ / .bashrc
    • ~ / .bash_profile
    • ~ / .profile

    No máximo, se você fez alguma coisa no terminal, poderá ver ~ / .bash_history

    O que significa

    Você deve criar o arquivo para definir seus comandos bash padrão (comumente em ~ / .bashrc). Para fazer isso, use qualquer tipo de editor, embora seja mais simples fazê-lo dentro do terminal:

    1. %> emacs .profile
    2. [do tipo w / in emacs:] source ~/.bashrc
    3. [do tipo w / in emacs:] Ctrl + x Ctrl + s (para salvar o arquivo)
    4. [do tipo w / in emacs:] Ctrl + x Ctrl + c (para fechar o emacs)
    5. %> emacs .bashrc
    6. [de / no emacs digite / cole todos os seus comandos bash, salve e saia]

    Da próxima vez que você sair e recarregar o terminal, ele deverá carregar todas as suas preferências de bash. Para uma boa medida, geralmente é uma boa ideia separar seus comandos em nomes de arquivos úteis. Por exemplo, dentro de ~ / .bashrc, você deve ter uma source ~/.bash_aliases e colocar todos os seus comandos alias em ~ / .bash_aliases.

    O que funcionou para mim é criar um .launchd.conf com as variables ​​que eu precisava:

     setenv FOO barbaz 

    Este arquivo é lido pelo launchd no login. Você pode adicionar uma variável ‘on the fly’ ao launchd em execução usando:

     launchctl setenv FOO barbaz` 

    Na verdade, o .launchd.cond contém simplesmente comandos launchctl.

    Variáveis ​​configuradas dessa maneira parecem estar presentes nos aplicativos da GUI corretamente.

    Se por acaso você estiver tentando definir suas variables ​​LANG ou LC_ dessa forma e estiver usando o iTerm2, desative a configuração ‘Definir variables ​​de local automaticamente’ na guia Terminal do Perfil que você está usando. Isso parece replace as variables ​​de ambiente do launchd e, no meu caso, foi configurar um LC_CTYPE quebrado causando problemas nos servidores remotos (que passaram a variável).

    (O environment.plist ainda parece funcionar no meu Lion. Você pode usar o painel de preferências RCenvironment para manter o arquivo em vez de editá-lo manualmente ou usar o Xcode. Ainda parece funcionar no Lion, embora a última atualização seja do Snow Leopard. era o meu método preferido.)

    Configure sua variável de ambiente PATH no Mac OS

    Abra o programa Terminal (isto é, na pasta Aplicativos / Utilitários por padrão). Execute o seguinte comando

     touch ~/.bash_profile; open ~/.bash_profile 

    Isto irá abrir o arquivo no seu editor de texto padrão.

    Para o ANDROID SDK como exemplo:

    Você precisa adicionar o caminho para o diretório de ferramentas e ferramentas da plataforma Android SDK. No meu exemplo, usarei “/ Development / android-sdk-macosx” como o diretório em que o SDK está instalado. Adicione a seguinte linha:

     export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools 

    Salve o arquivo e saia do editor de texto. Execute seu .bash_profile para atualizar seu PATH.

     source ~/.bash_profile 

    Agora, toda vez que você abrir o programa Terminal, o PATH includeá o Android SDK.

    Adicionando Variáveis ​​de Caminho ao OS X Lion

    Isso foi bem direto e funcionou para mim, no terminal:

     $echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, ie: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile $. .bash_profile #restart your bash shell 

    Uma resposta semelhante foi aqui: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

    Terminal Aberto:

     vi ~/.bash_profile 

    Aplicar a mudança para o sistema (não é necessário reiniciar o computador):

     source ~/.bash_profile 

    (Também trabalhe com o macOS Sierra 10.12.1)

    Eu tive problema com o Eclipse (iniciado como GUI, não do script) no Maverics que não tinha PATH personalizado. Eu tentei todos os methods mencionados acima sem sucesso. Finalmente eu encontrei a resposta mais simples de trabalho baseada em dicas daqui :

    1. Vá para a pasta /Applications/eclipse/Eclipse.app/Contents

    2. Edite o arquivo Info.plist com o editor de texto (ou XCode), adicione o dictionary LSEnvironment para a variável de ambiente com o caminho completo . Note que inclui também / usr / bin etc:

        LSEnvironment  PATH /usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b  CFBundleDisplayName Eclipse ... 
    3. Recarregue os parâmetros para o aplicativo com

       /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app 
    4. Reinicie o Eclipse

    Deixe-me ilustrar você do meu exemplo pessoal de uma forma muito redundante.

    1. Primeiro, após instalar o JDK, verifique se ele está instalado. insira a descrição da imagem aqui
    2. Às vezes, o macOS ou o Linux configura automaticamente a variável de ambiente para você, ao contrário do Windows. Mas esse não é o caso sempre. Então vamos checar isso. insira a descrição da imagem aqui A linha imediatamente após o echo $ JAVA_HOME ficaria vazia se a variável de ambiente não estivesse configurada. Deve estar vazio no seu caso.

    3. Agora precisamos verificar se temos o arquivo bash_profile. insira a descrição da imagem aqui Você viu que no meu caso já temos o bash_profile. Se não, temos que criar um arquivo bash_profile.

    4. Crie um arquivo bash_profile. insira a descrição da imagem aqui

    5. Verifique novamente para ter certeza de que o arquivo bash_profile está lá. insira a descrição da imagem aqui

    6. Agora vamos abrir o arquivo bash_profile. O MacOS o abre usando o programa TextEdit padrão. insira a descrição da imagem aqui

    7. Este é o arquivo onde as variables ​​de ambiente são mantidas. Se você abriu um novo arquivo bash_profile, ele deve estar vazio. No meu caso, ele já estava configurado para linguagem de programação python e distribuição Anaconda. Agora, eu preciso adicionar a variável de ambiente para Java, que é apenas adicionar a primeira linha. VOCÊ DEVE TIPO a primeira linha VERBATIM. APENAS a primeira linha. Salve e feche o TextEdit. Em seguida, feche o terminal. insira a descrição da imagem aqui

    8. Abra o terminal novamente. Vamos verificar se a variável de ambiente está configurada. insira a descrição da imagem aqui

    Eu tomei a rota idiota. Adicionados no final do / etc / profile

     for environment in `find /etc/environments.d -type f` do . $environment done 

    criei uma pasta / etc / environments crie um arquivo chamado “oracle” ou “whatever” e adicionei as coisas que eu precisava definir globalmente para ele.

    / etc $ cat /etc/environments.d/Oracle

     export PATH=$PATH:/Library/Oracle/instantclient_11_2 export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2 export SQLPATH=/Library/Oracle/instantclient_11_2 export PATH=$PATH:/Library/Oracle/instantclient_11_2 export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin 

    Mais detalhes, que talvez possam ser úteis para alguém:

    Devido às minhas próprias explorações, agora sei como definir variables ​​de ambiente em 7 de 8 maneiras diferentes. Eu estava tentando obter um envar através de um aplicativo que estou desenvolvendo no Xcode. Eu defino envars “tracer” usando esses methods diferentes para me informar quais os que entram no escopo do meu aplicativo. A partir do abaixo, você pode ver que a edição do “esquema” no Xcode para adicionar argumentos funciona, assim como “putenv”. O que não foi definido nesse escopo: ~ / .MACOS / environment.plist, plist específico de aplicativo, .profile e adição de uma fase de compilation para executar um script personalizado (encontrei outra maneira no Xcode [pelo menos] definir um, mas esqueci o que chamei de rastreador e não consigo encontrá-lo agora; talvez seja em outra máquina …)

    GPU_DUMP_DEVICE_KERNEL é 3

    GPU_DUMP_TRK_ENVPLIST é (nulo)

    GPU_DUMP_TRK_APPPLIST é (nulo)

    GPU_DUMP_TRK_DOTPROFILE é (nulo)

    GPU_DUMP_TRK_RUNSCRIPT é (nulo)

    GPU_DUMP_TRK_SCHARGS é 1

    GPU_DUMP_TRK_PUTENV é 1

    … por outro lado, se eu entro no Terminal e digo “set”, parece que o único que obtém é o do .profile (eu teria pensado que ele pegaria o environment.plist também, e eu Certo, uma vez eu vi um segundo tracer envar no Terminal, então alguma coisa provavelmente está perdida desde então. Longo dia …)

    Passo 1: abrir ~/.bash_profile

    Agora um editor de texto é aberto:

    Step2: nome da variável deve estar em maiúsculas. neste exemplo, a variável é NODE_ENV

    Passo 3: export NODE_ENV=development

    Salve e feche.

    Reinicie seu sistema.

    Feito.

    Para verificar a variável env: abra o terminal e digite

     echo $NODE_ENV