尝试使用pip安装virtualenv之后
$ pip install virtualenv
我收到一个权限被拒绝的错误
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'
所以我用sudo安装virtualenv
$ sudo pip install virtualenv
但是随后出现警告:
sudo的-H标志有什么作用?
最佳答案
一般来说
man sudo
(确切的文本可能有所不同,但是会相似):
那么,为什么这甚至是一个选择呢?
通常,使用“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拒绝写入另一个用户拥有的目录。
关于python - sudo -H是做什么的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43623025/