Como posso adicionar variáveis de ambiente?

I'm a correr Ubuntu 11.04. Utilizo o terminal para iniciar uma sessão de bash, e quero adicionar uma variável de ambiente:

$r@hajt:~$ env THEVAR=/example

Mas isto's não está a funcionar. Mostra todas as variáveis, sendo THEVAR a última, mas outra chamada para env não mostra THEVAR mais nada- env | grep THEVAR não retorna nada.

Da mesma forma, scripts com exportação (export THEVAR=/example) ou outras atribuições de variáveis (THEVAR=/example) don't adicionar a variável de ambiente.

Eu sei que estou a fazer algo de errado, sei que deveria ser algo simples, mas apenas consigo'não encontro o quê.

ACTUALIZAR: O verdadeiro significado da minha pergunta era este: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(De qualquer forma I'escolherei a resposta mais votada e deixarei o título editado - isso foi't o que eu estava a perguntar)

env executa um programa num ambiente modificado, depois rejeita todas as alterações.

Comentários sobre a pergunta (5)
Solução

Para definir a variável **somente*** para a concha actual:

VARNAME="my value"

Para a definir para a concha actual e **todos os processos*** começaram a partir da concha actual:

export VARNAME="my value"      # shorter, less portable version

Para a configurar permanentemente para todas as futuras sessões de bash, adicione essa linha ao seu ficheiro .bashrc no seu directório $HOME.

Para o definir permanentemente, e system wide (todos os utilizadores, todos os processos) adicionar variável definida em /etc/environment:

sudo -H gedit /etc/environment

Este ficheiro só aceita tarefas variáveis como:

VARNAME="my value"

Não utilizar a palavra-chave "exportar" aqui.

É necessário sair do utilizador actual e iniciar sessão novamente para que as variáveis de ambiente sofram alterações.

Comentários (7)

Para definir uma variável de ambiente uma vez, utilizar o comando "exportar" no prompt, e não num script de shell:

$ export THEVAR=/example

A variável será definida para o resto da sessão de shell ou até que não seja definida.

Para definir sempre uma variável de ambiente, utilize o comando export' no ficheiro.bashrc' (ou o ficheiro de inicialização apropriado para a sua shell).

Para definir uma variável de ambiente a partir de um script, utilizar o comando "exportar" no script, e depois "fonte" do script. Se executar o script, este não funcionará.

Para uma explicação da diferença entre o sourcing e a execução veja esta resposta: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

Comentários (1)

Para adicionar permanentemente uma nova variável de ambiente em Ubuntu (testada apenas em 14.04), usar os seguintes passos:

  1. Abrir um terminal (pressionando CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. Digite a sua palavra-passe
  4. Editar o ficheiro de texto que acabou de ser aberto: por exemplo, se quiser adicionar FOO=bar, então basta escrever FOOO=bar numa nova linha
  5. Guarde-o
  6. Uma vez guardado, sair e iniciar sessão novamente.
  7. As suas alterações necessárias são feitas.
Comentários (5)

Para que as mudanças de ambiente/var persistam após a conclusão do script, você tem que utilizar o arquivo ./script.sh' ou a notação abreviada para fonte, ".", como . ./script.sh.

Source executará os comandos no script como se você os tivesse digitado... por isso muda alguns aspectos do script, tais como a saída... então se o seu script verifica algo e decide sair se falso, por exemplo, através da chamada exit 0, ele irá terminar a sua sessão atual de terminal / shell.

Comentários (3)

Se você estiver fazendo coisas via script, uma maneira fácil de definir a variável de ambiente permanentemente é colocada abaixo da declaração em seu script,

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

Se você precisar avaliar expressões como pwd, você pode usar isto, por exemplo,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Comentários (0)

Eu sei disso'é bastante tarde, mas se você quiser adicionar uma variável de ambiente para todos os usuários (por exemplo JAVA usage) - você pode fazer o seguinte:

  1. Abrir /etc/bash.bashrc usando nano (você pode usar qualquer editor, eu não prefiro o VIM como ele's o pior quando se trata de facilidade de uso - nada pessoal).

  2. Anexar ao arquivo:

exportar VAR=caminho exportação PATH=$PATH:/bin 3) (Melhor se você puder saltar a caixa) - ou simplesmente abrir uma nova sessão SSH e confirmar usando `env' comando.

MAS SE você quiser que cada usuário tenha uma configuração separada para isto, você tem que fazer uma mudança (script) para o arquivo .bashrc em ~/.bashrc (ou /home/$USER/ se você é novo em sistemas Linux)

Comentários (0)