Defina uma variável de ambiente por usuário independente do shell

Defina uma variável de ambiente por usuário independente do shell

Como posso definir uma variável de ambiente permanente por usuário, independente do shell usado ( bash, zshe 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 ~/.profilenão é lido por todos os shells:

Fonte de todos os shells /etc/profile.

Isso significa que /etc/profilevocê 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.

informação relacionada