sudo -H + command
有时我在许多网站的教程中看到例如的用法sudo -H gedit /etc/apt/sources.list
。但是我知道sudo gedit /etc/apt/sources.list
可以完成工作。
所以有人能告诉我sudo -H
和之间有什么区别吗sudo
?
答案1
不同之处在于,例如,在关闭时gedit
写入首选项文件或类似内容。许多程序都会这样做。$HOME
当你跑步时
sudo gedit ...
然后$HOME
仍然设置为你的主目录(例如/home/singrium
)gedit
并将在那里写入其设置,但首选项文件将归 拥有。这可能会使以后以您的用户身份root
运行变得困难,因为由于缺乏权限,他们无法写入其设置。gedit
gedit
当你运行
sudo -H gedit ...
然后$HOME
将被设置为root
的主目录(通常是/root
)并且gedit
会将其首选项文件写入那里而不会影响您的帐户。
答案2
sudo -H
是相同的sudo --set-home
-H, --set-home 请求安全策略将 HOME 环境变量设置为目标用户的密码数据库条目指定的主目录。根据策略,这可能是默认行为。
它避免用户的主文件夹权限被更改为 root。
答案3
从man sudo
-H' The -H (HOME) option requests that the security policy set the HOME environment variable to the home directory of the target user (root by default) as specified by the password database. Depending on the policy, this may be the default behavior.
-H gedit
在您的情况下将设置$HOME
变量以指向root
(默认)而不是您的用户主目录。