sudo环境变量问题;程序库函数寻找

1. sudo 和 root不完全等效,继承的环境变量不一样,最主要的区别还是输入的密码不同。

2. 使用sudo去执行一个程序时,出于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。由于环境变量的原因,比如pip可以执行,但是sudo pip不一定可以执行(PATH改变了,除非加上完整路径)。

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”里设置需要保留的环境变量。

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,也会按照这个次序搜寻文件。所以函数库发布时,会提示需要预先安装的库,并指定文件位置或环境变量。

转载于:https://www.cnblogs.com/starRebel/p/9435129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值