
Como posso definir uma variável de ambiente permanente por usuário, independente do shell usado ( bash
, zsh
e fish
)?
Responder1
EDITAR: de acordo comQual é a melhor maneira independente de distribuição/shell para definir variáveis de ambiente?, a melhor solução para isso é~/.pam_environment
EDIT: revertido para a solução hacky, pois ~/.profile
não é lido por todos os shells:
Fonte de todos os shells /etc/profile
.
Isso significa que /etc/profile
você poderia colocar uma linha como
. $HOME/.custom-profile
Então, você poderia adicionar suas variáveis ~/.custom-profile
para cada usuário
Responder2
Todos os shells leem diferentes arquivos de perfil por usuário (zsh: ~/.profile, bash: ~/.bash_profile, csh possui apenas um arquivo rc e assim por diante). Então você teria que mudar todos esses candidatos em potencial.
No entanto, a maioria dos shells, pelo menos, voltam a ler ~/.profile (obrigado @terdon por apontar isso!), então é aí que você pode colocar suas exportações.
Como o "login" geralmente é feito por um processo que tem a capacidade de alterar seu uid e gid (normalmente: um gerenciador de login rodando como root), cabe a esses programas definir o ambiente para o programa gerado (por exemplo, um shell).
Mas: há mais de um gerenciador de login (seu gerenciador de login visual GDM/lightdm/KDM/..., getty, logind/loginct, ssh, getty...), e eles leem a configuração de arquivos diferentes, então não há uma maneira consistente lá também.