通常
man sudo(确切的文本可能会有所不同,但是会相似):
-H
-H(HOME)选项请求安全策略将HOME环境变量设置为密码数据库指定的目标用户的主目录(默认为root)。根据策略,这可能是默认行为。
那么,为什么这甚至是一个选择呢? 通常,使用“ sudo”不会更改$ HOME环境变量。
例如:
echo $HOME $USER/home/testuser testuser sudo bash -c 'echo $HOME $USER'/home/testuser root sudo -H bash -c 'echo $HOME $USER'/home/root root
您可以看到普通的sudo会将我的用户从“ testuser”更改为“ root”,但不会将$ HOME设置为什么,而sudo -H还将变量从“
my”主目录更改为root的主目录。
就你而言
pip警告您它是作为root用户执行的,并且想要修改$ HOME中的内容,该内容设置为’/ Users /
petertao’,该用户不是root用户(很可能是“ petertao”用户)。该警告表明pip使用$
HOME缓存文件,但由于文件夹所有权差异而已禁用其自身的缓存。
当然,以root pip身份执行时可以修改’/ Users / petertao / Library / Caches /
pip’,因为root(几乎)是万能的。稍后可能会造成麻烦,因为在没有root用户的情况下运行的程序将无法再覆盖或修改这些文件。而是pip拒绝写入另一个用户拥有的目录。



