Como adiciono variáveis de ambiente?

193

Estou executando o Ubuntu 11.04. Eu uso o terminal para iniciar uma sessão bash e quero adicionar uma variável de ambiente:

[email protected]:~$ env THEVAR=/example

Mas não está funcionando. Ele mostra todas as variáveis com THEVAR sendo a última, mas outra chamada para env não mostra THEVAR anymore- env | grep THEVAR não retorna nada.

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

Eu sei que estou fazendo algo errado, sei que deveria ser algo simples, mas não consigo encontrar o que.

ATUALIZAÇÃO: O verdadeiro significado da minha pergunta era este: link

(De qualquer forma, vou escolher a resposta mais votada e deixar o título editado - não era isso que eu estava perguntando)

env executa um programa em um ambiente modificado e, em seguida, descarta todas as alterações.

    
por huff 27.08.2011 / 02:22

5 respostas

306

Para definir a variável somente para o shell atual:

VARNAME="my value"

Para configurá-lo para o shell atual e todos os processos iniciados a partir do shell atual:

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

Para definir permanentemente para todas as sessões futuras do bash, adicione essa linha ao seu arquivo .bashrc no diretório $HOME .

Para defini-lo permanentemente e em todo o sistema (todos os usuários, todos os processos), adicione a variável definida em / etc / environment:

sudo -H gedit /etc/environment

Este arquivo aceita somente atribuições de variáveis como:

VARNAME="my value"

Não use a palavra-chave export aqui.

Você precisa sair do usuário atual e fazer login novamente para que as alterações nas variáveis de ambiente ocorram.

    
por Michał Šrajer 27.08.2011 / 09:50
20

Para definir uma variável de ambiente uma vez, use o comando export no prompt, não em um script de shell:

$ export THEVAR=/example

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

Para definir uma variável de ambiente toda vez, use o comando export no arquivo .bashrc (ou o arquivo de inicialização apropriado para o seu shell).

Para definir uma variável de ambiente a partir de um script, use o comando export no script e, em seguida, source do script. Se você executar o script, ele não funcionará.

Para uma explicação da diferença entre sourcing e execução, veja esta resposta: link

    
por lesmana 27.08.2011 / 09:20
15

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

  1. Abra um terminal (pressionando Ctrl Alt T )
  2. sudo -H gedit /etc/environment
  3. Digite sua senha
  4. Editar o arquivo de texto aberto:
    por exemplo. Se você quiser adicionar FOO=bar , apenas escreva FOO=bar em uma nova linha
  5. Salvar
  6. Depois de salvar, faça logout e faça login novamente.
  7. Suas alterações obrigatórias são feitas.
por user355501 07.12.2014 / 09:45
2

Para que as alterações do ambiente / var continuem após a conclusão do script, você precisará usar source ./script.sh ou a notação abreviada de origem, ".", como . ./script.sh

O Source irá executar os comandos no script como se você os tivesse digitado ... por isso muda alguns aspectos do script, como sair ... então se o seu script verificar alguma coisa e decidir sair se falso, por exemplo, chamando exit 0 , ele terminará sua sessão terminal / shell atual.

    
por m0bl 16.03.2018 / 16:09
1

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

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

Se você precisa avaliar expressões como pwd, você pode usar isso, por exemplo,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
    
por ShitalShah 12.07.2017 / 04:06

Tags