Respostas:
Eu acho que a página wiki da comunidade sobre variáveis de ambiente o ajudará a resolver
Para adicionar à resposta de sagarchalise, posso resumir o que o link sugere como locais apropriados para as configurações.
/etc/environment
/etc/profile
ou/etc/bash.bashrc
Na página:
/etc/environment
[...] se destina especificamente a configurações de variáveis de ambiente em todo o sistema. Não é um arquivo de script, mas consiste em expressões de atribuição, uma por linha. Especificamente, esse arquivo armazena as configurações de local e de caminho em todo o sistema.
Usar /etc/profile
é um caminho bastante Unix-y, mas sua funcionalidade é bastante reduzida no Ubuntu. Existe apenas para apontar /etc/bash.bashrc
e para coletar entradas /etc/profile.d
.
No meu sistema, a única entrada interessante em profile.d é /etc/profile.d/bash_completion.sh
.
Uma versão anterior da página Ubuntu é recomendada ~/.pam_environment
, mas a página atualmente sugere que, se isso não funcionar, você deve usar
~/.profile
- Este é provavelmente o melhor arquivo para inserir atribuições de variáveis de ambiente, uma vez que é executado automaticamente pelo DisplayManager durante a sessão da área de trabalho do processo de inicialização, bem como pelo shell de login quando um faz logon no console de texto.
~/.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 logon. Bash vai preferir ~/.bash_profile
a ~/.bash_login
. [...] Esses arquivos não influenciam uma sessão gráfica por padrão ".
~/.bashrc
- "... pode ser o local mais fácil para definir variáveis". /etc/environment
e quando? Não parece trabalhar com cron, mesmo quando se usaSHELL=/bin/bash
/etc/environment
gostam JAVA_HOME="/opt/java"
e ANT_HOME="/opt/ant"
como fazê-lo
Você tem:
/ etc / profile: arquivo .profile em todo o sistema para os 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 for bash:
/etc/bash.bashrc
Para o ambiente do usuário, existe uma matriz confusa específica para o shell e se é considerado um "shell de login". Se o shell for bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
para sh / dash:
$HOME/.profile
para zsh, eu nem vou tentar entender isso .
Conforme recomendado em https://help.ubuntu.com/community/EnvironmentVariables :
Variáveis de ambiente globais destinadas a afetar todos os usuários devem entrar /etc/environment
.
As variáveis de ambiente específicas do usuário devem ser definidas ~/.pam_environment
.
Evite os arquivos profile e rc para definir variáveis de ambiente no Ubuntu. Eles me causaram mais dores de cabeça do que valem.
Isso é mais fácil dizer do que fazer, no entanto;)
É possível que você encontre a mesma lacuna de configuração que existia para mim. Veja a solução alternativa para a casa criptografada abaixo.
~/.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 bloqueei meu login várias vezes, tentando contorná-lo, por isso continuo com a cópia estática feia dos padrões :)
Nas versões do Ubuntu até o Precise 12.04 Beta 2, inclusive, se você estiver usando um diretório inicial criptografado, precisará modificá /etc/pam.d/common-session
-lo para carregá-lo ~/.pam_environment
. Aparentemente, esta solução funciona para versões anteriores, mas ainda não a testei.
Este parece ser um problema com diretórios pessoais criptografados. Eu adicionei
sessão necessária pam_env.so
no final de /etc/pam.d/common-session e agora ~ / .pam_environment é lido. Em outro sistema sem diretórios pessoais 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: https://superuser.com/a/408373/66856
${HOME}
também não funcionará. Não há expansão no .pam_environment
.
.pam_environment
, mas HOME
não é definido tão cedo normalmente. Se essa linha tivesse sido lida DEFAULT=${PATH}/Applications/jdk
, você teria visto o valor PATH
inserido nela.