/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.