
Como definir variáveis de ambiente para um usuário da maneira mais genérica que seja independente das variáveis de ambiente do shell (como perfil para shells do tipo Bourne, bahsrc, zshrc, zshenv, ..)? A ideia é definir variáveis de ambiente para um usuário durante o login do usuário e disponibilizá-las (bifurcadas) para qualquer processo (gerado não apenas pelo processo shell, mas por qualquer outro processo), incluindo qualquer tipo de shell?
Responder1
Esta documentação do Ubuntufala sobre ~/.pam_environment
:
Variáveis de ambiente para toda a sessão
Arquivos adequados para configurações de variáveis de ambiente que devem afetar apenas um usuário específico (em vez do sistema como um todo) são
~/.pam_environment
e~/.profile
. Após ter editado um desses arquivos, você deveráfaça login novamentepara inicializar as variáveis.
~/.pam_environment
Este arquivo destina-se especificamente à configuração do ambiente de um usuário. Não é um arquivo de script, mas consiste em expressões de atribuição, uma por linha. Este exemplo define a variável FOO como uma string literal e modifica a variável PATH:
FOO=bar PATH DEFAULT=${PATH}:${HOME}/MyPrograms
Observação:
Você não pode citar o valor ao fazer uma atribuição de variável simples como no
FOO=bar
exemplo.A sintaxe usada para modificar PATH, cuja sintaxe difere dos arquivos de script, é necessária para que a expansão de variáveis funcione.
~/.pam_environment
é gravado quando você usa várias GUIs para definir o idioma ou formatos regionais. Conseqüentemente, se você, por exemplo, definir LC_TIME editando~/.pam_environment
manualmente, sua entrada será substituída se você usar posteriormente a GUI de suporte ao idioma para alterar a configuração dos formatos regionais.
Este arquivo, assim como /etc/environment
, parece ser consultado porpam_env.so
o que acredito que aconteceria como parte do processo de login e seria separado de qualquer shell.