Como eu defino uma variável de ambiente de usuário? (permanentemente, não sessão)

135

Isso está me irritando. Eu vi várias sugestões (todas usando arquivos e sintaxe diferentes) e nenhuma delas funcionou.

Como defino uma variável de ambiente para um usuário específico? Eu estou no squeeze debian. Qual é a sintaxe exata que devo colocar no arquivo para fazer ABC="123"?

    
por Gilles 28.09.2011 / 13:00

6 respostas

105

Você tem que colocar a declaração nos arquivos de inicialização do seu shell:

  • Se você estiver usando bash, ash, ksh ou algum outro shell estilo Bourne, você pode adicionar

    ABC="123"; export ABC
    

    no seu arquivo .profile ( ${HOME}/.profile ). Esta é a situação padrão na maioria das instalações Unix, e em particular no Debian.

    Se o seu shell de login é bash, você pode usar .bash_profile ( ${HOME}/.bash_profile ) ou .bash_login .

    Observação: Se um desses arquivos existir e seu shell de login for bash, .profile não será lido quando você efetuar login no ssh ou em um console de texto, mas ainda assim poderá ser lido de .bash_profile se você efetuar login na GUI. Além disso, se não houver .bash_profile , use .bashrc .

  • Se você definiu zsh como seu shell de login, use ~/.zprofile em vez de ~/.profile .

  • Se você estiver usando o tcsh, adicione

    setenv ABC "123"
    

    no arquivo .login ( ${HOME}/.login )

  • se você estiver usando outro shell, consulte o manual do shell sobre como definir variáveis de ambiente e quais arquivos são executados na inicialização do shell.

por 28.09.2011 / 13:15
41

Use o arquivo /etc/environment para definir as variáveis de ambiente. Em seguida, adicione a seguinte linha dentro do arquivo /etc/environment .

ABC="123"

Agora, a variável ABC estará acessível a partir de todas as sessões do usuário. Para testar a saída da variável, primeiro atualize a variável de ambiente usando o comando

source /etc/environment

e execute echo $ABC .

    
por 13.03.2013 / 05:33
8

Este é um procedimento geral que você pode usar para praticamente qualquer shell. Em qualquer caso, você precisa saber com qual shell o usuário normalmente faria login:

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"

Depois, você precisa descobrir quais arquivos de pontos esse shell normalmente lê:

man $shell

Um atalho que pode funcionar é listar os arquivos de pontos que contêm o nome do shell:

ls ~/.*${shell}*

Se você quiser verificar se um dos arquivos é realmente lido durante o login, você pode simplesmente imprimir o nome do arquivo em cada um deles, por exemplo:

echo .bashrc

Ao fazer o login, você deve ver quais arquivos estão sendo lidos e decidir qual deles modificar. Cuidado, você não deve tentar usar echo "$0" ou similar, porque o valor de $0 depende de como o shell processa os arquivos de pontos e pode ser enganoso.

Quando se trata de declarar a variável "permanentemente", observe que isso só se estende à sessão. Não há como acessar o valor de uma variável sem uma sessão, por isso não tem significado fora de uma. Se você quer dizer "somente leitura", que é dependente do shell, e em Bash você pode usar:

declare -r VAR

se já tiver um valor ou

declare -r VAR=value

para atribuir ao mesmo tempo. Nem todos os shells têm esse recurso.

Para declarar uma variável na maioria dos shells, você deve usar um nome de variável ( [A-Za-z_][A-Za-z0-9_]* ), seguido por um sinal de igual (e sem espaços ao redor do sinal de igual), então um valor cotado, a menos que o valor seja um simples [A-Za-z0-9_]+ ). Por exemplo:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
    
por 28.09.2011 / 13:50
4

Use exportação.

export ABC="123"

Para verificar se está definido, use

env

e / ou

env | grep ABC

Para adicioná-lo permanentemente, adicione isso ao seu arquivo ~/.bashrc .

export ABC="123"
    
por 28.09.2011 / 13:04
3

O comando exato é:

echo 'export ABC = "123"' >> ~/.profile
    
por 31.08.2013 / 16:52
1

A melhor maneira que funcionou para mim é modificar o arquivo .bashrc no shell BASH.

use isso por exemplo:

  1. abra seu arquivo .bashrc
  2. adicione esta linha:

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    por exemplo: export HOME = "/home/user/"

    Lembre-se de usar "" , pois o uso de ' ' não funcionará e o arquivo bashrc informará o erro durante o fornecimento.

  3. fonte na sessão atual.

Eu também tentei modificar o arquivo / etc / environment, mas ele não me permitiu criar uma nova variável de ambiente e, quando eu a obtive, ela gerou um erro que a variável definida não foi encontrada.

    
por 22.07.2017 / 10:27