Baik Debian dan Ubuntu mengirimkan /etc/sudoersfile yang berisi Defaults env_reset, yang me-reset variabel lingkungan.
Namun, perilaku env_resettelah diubah dari tidak menyentuh $ HOME untuk mengatur ulang ke rumah pengguna target.
Ubuntu memutuskan untuk menambal versi mereka sudountuk menjaga perilaku sebelumnya:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
Di Ubuntu, untuk mereset variabel lingkungan $ HOME ke pengguna target, kita harus mengatur salah satu Defaults always_set_homeatau Defaults set_home(dalam hal ini hanya sudo -sakan mendapatkan HOME diperbarui) di dalamnya /etc/sudoers.
Bug ini di pelacak Ubuntu memiliki beberapa alasan lagi untuk tidak menetapkan $ HOME di sudo:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
Lihat komentar # 4:
Jika HOME dihapus, maka mis. Vim, bash, dll., Akan menggunakan /root/.vimrc, /root/.bashrc, dll daripada pengguna ~ / .vimrc, ~ / .bashrc, dll. Meskipun itu adalah ide yang buruk untuk menjalankan klien X melalui sudo, mereka juga kemungkinan akan mencari lokasi yang salah untuk file konfigurasi, dan ada kemungkinan klien X11 bahkan tidak dapat terhubung ke server X11 jika mereka diarahkan pada file .Xauthority yang salah.
Ini adalah keputusan sadar oleh pengembang Ubuntu.
Jawaban ini memiliki detail lebih lanjut tentang opsi sudoers seperti always_set_home:
https://unix.stackexchange.com/a/91572/281844
Ada masalah kedua dalam pertanyaan Anda, sudo echo $HOMEyang masih menampilkan rumah pengguna bahkan di Debian.
Itu terjadi karena shell berkembang $HOME sebelum menjalankan sudoperintah.
Jadi ini:
$ sudo echo $HOME
Pertama kali diperluas oleh shell ke:
$ sudo echo /home/user
Dan kemudian sudo dieksekusi echo /home/usersebagai root ...
Ini harus menunjukkan perbedaannya juga:
$ sudo bash -c 'echo $HOME'
/root
Atau dapatkan shell root lengkap dan lihat variabel lingkungan di sana:
$ sudo -s
# echo $HOME
/root