Como adiciono variáveis de ambiente?

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

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

Mas não está a funcionar. Ele mostra todas as variáveis com THEVAR sendo o último, mas outra chamada para env não mostra THEVAR mais- env | grep THEVAR não devolve nada.

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

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

Atualização: o verdadeiro significado da minha pergunta foi 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 pedindo)

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

Para Definir variável apenas para shell atual:

VARNAME="my value"

Para defini-lo para o shell atual e todos os processos iniciado a partir do shell atual:

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

Para configurá-lo permanentemente para todas as sessões de bash futuras, adicione essa linha ao seu .bashrc arquivo em seu $HOME Directorio.

Para defini-lo permanentemente, e sistema largo (todos os usuários, todos os processos) adicionar Definir variável em / etc / ambiente:

sudo -H gedit /etc/environment

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

VARNAME="my value"

Não use o export palavra-chave aqui.

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

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

$ export THEVAR=/example

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

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

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

Para obter uma explicação da diferença entre sourcing 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

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

  1. Abra um terminal (pressionando CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. Digite sua senha
  4. Edite o arquivo de texto que acabou de abrir:
    por exemplo, se você quiser adicionar FOO=bar, então basta escrever FOO=bar em uma nova linha
  5. Salve-o
  6. Uma vez salvo, faça logout e login novamente.
  7. Suas alterações necessárias são feitas.

Para que as alterações de ambiente/var persistam após a conclusão do script, você deve usarsource ./script.sh ou a notação abreviada para fonte,".", comer . ./script.sh

A fonte executará os comandos no script como se você os tivesse digitado... portanto, ele altera alguns aspectos do script, como sair... portanto, se o seu script verificar algo e decidir sair se for falso, por exemplo, por meio de chamadas exit 0, encerrará sua sessão atual do terminal / shell.

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) Aberto /etc/bash.bashrc usando nano (você pode usar qualquer editor, Eu não Prefiro VIM como é o pior quando se trata de facilidade de Uso - nada pessoal).

2) Anexar ao arquivo:

export VAR=path export PATH=$PATH:/bin3) (Melhor Se você pode saltar a caixa) - ou simplesmente abrir uma nova sessão SSH e confirmar usando o comando `env'.

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

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

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

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

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

Se você estiver usando o Ubuntu ou qualquer sistema baseado em Unix, exporte as variáveis no ~/.bashrc arquivo. É um arquivo oculto e você pode chegar lá através do terminal ou unhiding arquivos ocultos no sistema de arquivos.

Em seguida, edite o arquivo e defina export THEVAR=/example lá, salve e está feito.

Se você estiver implantando aplicação JAVA usando o TOMCAT, poderá definir variáveis de ambiente da seguinte maneira:

1.sudo su e cd para / var / lib / tomcat8 / bin / (ou o que for o caminho do seu Tomcat bin)

  1. toque setenv.sh (se não existir), se o arquivo presente já fizer 'vi setenv.sh"

  2. chmod 777 setenv.sh (tornar o arquivo executável)

  3. vi setenv.sh e definir a seguinte linha em setenv.chave shexport = valor

  4. sudo systemctl reiniciar tomcat.servico

No seu arquivo java, você pode usar o seguinte código para verificar se a variável está definida

private static void printEnv() {    System.out.println("******************************Environment Vars*****************************");    Map<String, String> enviorntmentVars = System.getenv();    enviorntmentVars.entrySet().forEach(System.out::println);    System.out.println("******************************system Vars*****************************");    Properties enviorntmentProperties = System.getProperties();    enviorntmentVars.entrySet().forEach(System.out::println);}

O outro é sobre variáveis globais, este não adiciona tal limitação. Eu manteria isso separado.

https://help.ubuntu.com/community/EnvironmentVariables

Quando definido / exportado em .bashrc, funciona corretamente.

Que tal ’ THEVAR = / example`?

possível duplicata de variável de ambiente do Google Earth e $BROWSER