Hem Debian hem de Ubuntu , ortam değişkenlerini sıfırlayan bir /etc/sudoersdosya içeriyor Defaults env_reset.
Ancak, davranışı env_resetdeğiştirildi değil hedef kullanıcının ev sıfırlayarak için dokunaklı $ HOME.
Ubuntu sudoönceki davranışlarını sürdürmek için sürümlerini düzeltmeye karar verdi :
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
Ubuntu'da, $ HOME ortam değişkenini hedef kullanıcıya sıfırlamak için birinin ya Defaults always_set_homeda Defaults set_home(bu durumda yalnızca sudo -sHOME'un güncellenmesini sağlayacak) ayarlaması gerekir /etc/sudoers.
Ubuntu izleyicideki bu hata, sudo'da $ HOME ayarlamama konusunda biraz daha mantıklı:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
Yorum 4'e bakınız:
HOME kaldırılırsa, örneğin vim, bash, vb., Kullanıcının ~ / .vimrc, ~ / .bashrc, vs. yerine /root/.vimrc, /root/.bashrc vb. Kullanacaktır. Kötü bir fikir olsa da X istemcilerini sudo üzerinden çalıştırmak için yapılandırma dosyaları için yanlış konumlara bakmaları muhtemeldir ve X11 istemcilerinin yanlış .Xauthority dosyasına yönelik olmaları durumunda X11 sunucusuna bile bağlanamadıkları ihtimali vardır.
Ubuntu geliştiricilerin bilinçli bir kararı.
Bu cevap, sudoers seçenekleri gibi daha fazla ayrıntıya sahiptir always_set_home:
https://unix.stackexchange.com/a/91572/281844
Sorunuzda ikinci bir sorun var, ki sudo echo $HOMEbu hala kullanıcının evini Debian'da bile görüntülüyor.
Bunun nedeni , komutu çalıştırmadan $HOME önce kabuğun genişlemesidir sudo.
Yani bu:
$ sudo echo $HOME
İlk önce kabuk tarafından genişletilir:
$ sudo echo /home/user
Ve sonra sudo echo /home/userroot olarak çalıştırılıyor ...
Bu da farkı göstermelidir:
$ sudo bash -c 'echo $HOME'
/root
Veya tam bir kök kabuğu alın ve ortam değişkenini burada görün:
$ sudo -s
# echo $HOME
/root