Por que minha variável de ambiente não é visível na linha de comando?

3

Estou tentando executar o servidor SMTP James no Lion (Mac OS X 10.7.2). Quando faço isso:

sudo JAVA_HOME=/Library/Java/Home ./james-2.3.2/bin/run.sh

funciona bem.

No entanto, gostaria de tornar o JAVA_HOME uma variável de ambiente, para que seja visível para outras aplicações também.

Eu editei o ~ / .bash_profile para ficar assim:

export JAVA_HOME=/Library/Java/home

e a variável parece estar visível na linha de comando da seguinte forma:

$ echo $JAVA_HOME
/Library/Java/home

Mas quando eu executo o james novamente, recebo um aviso sobre JAVA_HOME:

$ sudo ./james-2.3.2/bin/run.sh
ERROR: JAVA_HOME not found in your environment.

Please, set the JAVA_HOME variable in your environment to match the
location of the Java Virtual Machine you want to use.

Alguma idéia do que estou fazendo de errado? Por que o comando para executar o james não pode ver a variável de ambiente JAVA_HOME?

Qualquer informação é muito apreciada, obrigado!

    
por Robert Hume 29.12.2011 / 18:19

2 respostas

5

sudo redefine as variáveis de ambiente para padrões seguros.

Se você quiser preservar essa variável, precisará visudo e adicionar isto:

Defaults env_keep = "JAVA_HOME"

Por favor, note que carregar variáveis de ambiente de usuário para contas com privilégios é um possível risco de segurança.

    
por 30.12.2011 / 12:50
1

Não tenho certeza se o Lion tem um diretório /etc ou não (suponho que sim) ou se /etc/bashprofile ou /etc/bashrc está realmente nesse diretório, mas se você quiser fazer essa alteração em todo o sistema, basta procurar por um desses arquivos, editá-lo e fazer a alteração da seguinte forma:

export PATH=$PATH:/path/to/Java/

O login seguinte selecionará a alteração e será mantido.

    
por 29.12.2011 / 19:50