Tanto o Debian quanto o Ubuntu enviam um arquivo /etc/sudoers
que contém Defaults env_reset
, que redefine as variáveis de ambiente.
No entanto, o comportamento de env_reset
foi alterado de não tocando em $ HOME para redefini-lo na casa do usuário de destino.
O Ubuntu decidiu corrigir sua versão de sudo
para manter o comportamento anterior:
link
No Ubuntu, para redefinir a variável de ambiente $ HOME para o usuário de destino, é necessário definir Defaults always_set_home
ou Defaults set_home
(caso em que somente sudo -s
obterá a atualização de HOME) em /etc/sudoers
.
Esse bug no rastreador do Ubuntu tem um pouco mais de racionalidade em não configurar o $ HOME no sudo: link
Veja o comentário # 4:
If HOME is removed, then e.g. vim, bash, etc., will use /root/.vimrc, /root/.bashrc, etc rather than the user's ~/.vimrc, ~/.bashrc, etc. While it's a bad idea to run X clients via sudo, they too would likely look in the wrong locations for configuration files, and there's a chance that X11 clients may not even be able to connect to the X11 server if they are aimed at the wrong .Xauthority file.
É uma decisão consciente dos desenvolvedores do Ubuntu.
Esta resposta tem mais detalhes sobre as opções de sudoers, como always_set_home
:
link
Há um segundo problema em sua pergunta, que é o sudo echo $HOME
, que ainda exibe a casa do usuário, mesmo no Debian.
Isso acontece porque o shell está expandindo $HOME
antes executando o comando sudo
.
Então isso:
$ sudo echo $HOME
Primeiro é expandido pelo shell em:
$ sudo echo /home/user
E, em seguida, o sudo executa echo /home/user
como root ...
Isso também deve demonstrar a diferença:
$ sudo bash -c 'echo $HOME'
/root
Ou obtenha um shell root completo e veja a variável de ambiente:
$ sudo -s
# echo $HOME
/root