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.
Para definir a variável **somente*** para a concha actual:
Para a definir para a concha actual e **todos os processos*** começaram a partir da concha actual:
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:
Este ficheiro só aceita tarefas variáveis como:
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.
Para definir uma variável de ambiente uma vez, utilizar o comando "exportar" no prompt, e não num script de shell:
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
Para adicionar permanentemente uma nova variável de ambiente em Ubuntu (testada apenas em 14.04), usar os seguintes passos:
sudo -H gedit /etc/environment
FOO=bar
, então basta escreverFOOO=bar
numa nova linhaPara 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.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,
Se você precisar avaliar expressões como pwd, você pode usar isto, por exemplo,
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:
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).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)