Onde declarar variáveis de ambiente?

54

Quais são os lugares corretos para:

  1. Variáveis de ambiente globais destinadas a afetar todos os usuários?
  2. Variáveis de ambiente específicas do usuário?
por Ivan 24.09.2010 / 05:39

4 respostas

16

Acho que isso ajudará você a resolver

    
por sagarchalise 24.09.2010 / 05:49
70

Para adicionar à resposta do sagarchalise, posso resumir o que o link sugere como locais apropriados para configurações.

Para configurações globais, variáveis de ambiente em todo o sistema

  • Use /etc/environment
  • Não use /etc/profile ou /etc/bash.bashrc

Da página:

  

/etc/environment [...] é   especificamente destinado a todo o sistema   configurações de variáveis de ambiente. Isto é   não é um arquivo de script, mas consiste   de expressões de atribuição, uma por   linha. Especificamente, este arquivo armazena   o locale e caminho do sistema   configurações.

Usar /etc/profile é um caminho bastante Unix-y, mas sua funcionalidade é bastante reduzida no Ubuntu. Existe apenas para apontar para /etc/bash.bashrc e para coletar entradas de /etc/profile.d .

No meu sistema, a única entrada de entrada interessante em profile.d é /etc/profile.d/bash_completion.sh .

Para configurações locais ou por usuário

Uma versão anterior da página do Ubuntu recomendou ~/.pam_environment , mas a página atualmente sugere que, se isso não funcionar, você deve usar

  •   

    ~/.profile - Este é provavelmente o   melhor arquivo para colocação de ambiente   atribuições variáveis em, uma vez que fica   executado automaticamente pelo   DisplayManager durante a inicialização   processo de sessão de desktop, bem como por   o shell de login quando um log-in de   o console textual.

  • ~/.bash_profile ou ~./bash_login - Se um deles existir, o bash o executa em vez de ~/.profile quando o bash é iniciado como um shell de login. O Bash irá preferir ~/.bash_profile a ~/.bash_login . [...] Esses arquivos não influenciam uma sessão gráfica por padrão. "

  • ~/.bashrc - "... pode ser o lugar mais fácil para definir variáveis".
por belacqua 14.02.2011 / 22:32
7

Você tem:

  

/ etc / profile: arquivo .profile em todo o sistema para o shell Bourne (sh (1))   e shells compatíveis com Bourne (bash (1), ksh (1), ash (1), ...).

que em Lucid e Maverick correm

/etc/profile.d/*.sh

se presente, e se o shell do usuário é bash:

/etc/bash.bashrc

Para o ambiente do usuário, há uma matriz confusa específica para o shell e se ela é considerada um "shell de login". Se o shell é bash:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

para sh / traço:

$HOME/.profile

para o zsh, nem vou tentar entender isso .

    
por msw 24.09.2010 / 05:53
5

Conforme recomendado no link :

  1. Variáveis de ambiente globais destinadas a afetar todos os usuários devem ir em /etc/environment .

  2. As variáveis de ambiente específicas do usuário devem ser definidas em ~/.pam_environment .

Evite os arquivos profile e rc para configurar variáveis de ambiente no Ubuntu. Eles me causaram mais dores de cabeça do que valem.

Isto é mais fácil dizer do que fazer no entanto;)

É possível que você tenha a mesma lacuna de configuração que existia para mim. Veja a solução alternativa para a página inicial criptografada abaixo.

Meu ~/.pam_environment :

PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK        DEFAULT=${HOME}/Applications/jdk

Por que o caminho estático feio? ${PATH} não funcionaria para mim. Eu tentei meu login várias vezes tentando contornar isso, então eu estou furando com a cópia estática feia dos padrões:)

Solução para Pastas Domésticas Criptografadas

Nas versões do Ubuntu até e incluindo o Precise 12.04 Beta 2, se você estiver usando um diretório pessoal criptografado, precisará modificar /etc/pam.d/common-session para que ele carregue ~/.pam_environment . Esta solução aparentemente funciona para versões anteriores, mas eu não testei isso.

Guenther Montag (g-montag ) escreveu em 2010-08-19:

  

Isso parece ser um problema com os diretórios pessoais criptografados. Eu adicionei

     

sessão requerida pam_env.so

     

no final de /etc/pam.d/common-session e agora ~ / .pam_environment é lido. Em outro sistema sem diretórios iniciais criptografados (também 10.04), a solução alternativa não é necessária. Talvez no meu caso, o sistema tente ler ~ / .pam_environment antes de ser descriptografado.

Adaptado da minha resposta no Superusuário: link

    
por Alain O'Dea 04.04.2012 / 06:16