Como eu configuro a variável de ambiente para todos os usuários, mesmo ao fazer sudo su?

3

Eu criei um arquivo chamado x.sh no diretório /etc/profile.d/ , para que ele possa ser acessado por todos os usuários. Eu esperava quando eu mudo o usuário atual no terminal (do usuário logado) usando o comando sudo su other_user , a variável que eu configurei no arquivo x.sh deve estar acessível mas não. Como posso definir variáveis para serem acessíveis como eu desejei?

    
por Soheil Pourbafrani 20.11.2017 / 09:32

2 respostas

5

/etc/profile (e, portanto, /etc/profile.d ) é lido para os shells de login. sudo su other_user não executa um shell de login. É uma prática ruim, deixa o ambiente contaminado com variáveis do usuário original . Você deve fazer um destes comandos:

sudo -iu other_user
sudo su - other_user

Ambos carregam /etc/profile porque iniciam shells de login e ambos começam com ambientes relativamente limpos.

Idealmente, porém, as variáveis devem ser definidas em /etc/environment , se possível. Esse arquivo deve ser lido por su , para que as variáveis estejam disponíveis independentemente de um shell de login ser iniciado. No entanto, esse arquivo não suporta a sintaxe do shell, portanto, se você precisar de código shell complexo para definir suas variáveis, não será possível usá-lo.

    
por Olorin 20.11.2017 / 09:49
2

Seguindo Como definir permanentemente as variáveis ambientais · U & L bash será carregado

/etc/profile

, então esse é o lugar certo para adicionar variáveis efetivas para todos os usuários.

    
por dessert 20.11.2017 / 09:43