Estou executando o Ubuntu 11.04. Eu uso o terminal para iniciar uma sessão do bash e quero adicionar uma variável de ambiente:
$r@hajt:~$ 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 aparece THEVAR
mais - env | grep THEVAR
não retorna nada.
Da mesma forma, scripts com export ( export THEVAR=/example
) ou outras atribuições de variáveis ( THEVAR=/example
) não adicionam a variável de ambiente.
Sei que estou fazendo algo errado, sei que deve ser algo simples, mas não consigo encontrar o que.
ATUALIZAÇÃO: 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, 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 descarta todas as alterações.
THEVAR=/example
?Respostas:
Para definir variável apenas para o shell atual:
Para configurá-lo para o shell atual e todos os processos iniciados no shell atual:
Para defini-lo permanentemente para todas as sessões futuras do bash, adicione essa linha ao seu
.bashrc
arquivo no seu$HOME
diretório.Para defini-lo permanentemente e em todo o sistema (todos os usuários, todos os processos), adicione a variável definida no / etc / environment:
Este arquivo aceita apenas atribuições variáveis como:
Não use a
export
palavra - chave aqui.Você precisa sair do usuário atual e efetuar login novamente para que as alterações nas variáveis de ambiente ocorram.
fonte
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
help.ubuntu.com/community/EnvironmentVariablesecho $myvar
Para definir uma variável de ambiente uma vez, use o
export
comando no prompt, não em um script de shell:A variável será configurada para o restante da sessão do shell ou até a desativação.
Para definir sempre uma variável de ambiente, use o
export
comando no.bashrc
arquivo (ou o arquivo de inicialização apropriado para seu shell).Para definir uma variável de ambiente a partir de um script, use o
export
comando no script e, em seguida,source
o script. Se você executar o script, ele não funcionará.Para obter uma explicação da diferença entre fornecimento e execução, consulte esta resposta: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a- bash-script / 176788 # 176788
fonte
Para adicionar permanentemente uma nova variável de ambiente no Ubuntu (testada apenas na 14.04), use as seguintes etapas:
sudo -H gedit /etc/environment
por exemplo, se você deseja adicionar
FOO=bar
, basta escreverFOO=bar
em uma nova linhafonte
sudo gedit
(Veja askubuntu.com/questions/270006/… ) echmod 777
. O último nunca deve ser feito em um arquivo de configuração do sistema.if
outest
)Foo="bar"
?Para que as alterações no ambiente / var persistam após a conclusão do script, você deve usar
source ./script.sh
ou a notação abreviada da fonte ".", Como. ./script.sh
O Source executará os comandos no script como se você os tivesse digitado ... portanto, ele altera alguns aspectos do script, como sair ... portanto, se o script verificar algo e decidir sair se for falso, por exemplo, via chamada
exit 0
, ele encerrará sua sessão de terminal / shell atual.fonte
Se você estiver fazendo as coisas via script, uma maneira fácil de definir a variável de ambiente permanentemente é a seguinte declaração no script,
Se você precisar avaliar expressões como pwd, poderá usar isso, por exemplo,
fonte
Eu sei que é muito tarde, mas se você quiser adicionar uma variável de ambiente para todos os usuários (por exemplo, uso de JAVA) - você pode fazer o seguinte:
1) Abra
/etc/bash.bashrc
usando o nano (você pode usar qualquer editor, eu não prefiro o VIM, pois é o pior quando se trata de facilidade de uso - nada pessoal).2) Anexe ao arquivo:
export VAR=path export PATH=$PATH:/bin
3) (Melhor se você puder devolver a caixa) - ou simplesmente abra uma nova sessão SSH e confirme usando o comando `env '.MAS, se você quiser que cada usuário tenha uma configuração separada para isso, faça uma alteração (com script) no
.bashrc
arquivo~/.bashrc
(ou/home/$USER/
se você é novo nos sistemas Linux)fonte