1. sudo 和 root不彻底等效,继承的环境变量不同,最主要的区别仍是输入的密码不一样。python
2. 使用sudo去执行一个程序时,出于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。因为环境变量的缘由,好比pip能够执行,可是sudo pip不必定能够执行(PATH改变了,除非加上完整路径)。shell
3. 默认状况下sudo会重置PATH环境变量,赋给PATH的值在/etc/sudoers文件中的“Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin”中设定。因此若是使用sudo运行程序,最好补全完整路径。安全
4. /etc/sudoers文件中的“Defaults env_reset”控制了sudo默认不会继承原有环境。若是改为“Defaults !env_reset”则会继承原有环境(能够在普通帐号的”.bashrc”中创建一个测试环境变量TESTV,而后使用“sudo bash”,再测试不一样设置下,是否能看到TESTV的值)。同时,若是是“Defaults env_reset”,那么能够在下方的“”env_keep”里设置须要保留的环境变量。bash
5. 若是使用“sudo bash”。那么至关于运行了一个“ interactive bash
shell”,会“source /root/.bashrc”,也就会有root的环境变量。sudo成root以后,uid/gid和root帐户一致。函数
6. 运行如“sudo echo $PATH”看到的仍然是当前普通用户的PATH,这是由于shell在执行命令以前会先替换$PATH,因此这个命令最后变成了“sudo echo /home/testuse/.......”,输出的仍然是用户的PATH。测试
7. python运行时,遇到import module,会依次在当前目录、环境变量PYTHONPATH、python的安装设置相关的默认路径中查找。若是module内也有import A,也会按照这个次序搜寻文件。因此函数库发布时,会提示须要预先安装的库,并指定文件位置或环境变量。ui