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,也会按照这个次序搜寻文件。所以函数库发布时,会提示需要预先安装的库,并指定文件位置或环境变量。
sudo环境变量问题;程序库函数寻找的更多相关文章
- linux sudo环境变量设置
这是第一次在博客园中写自己的随笔,也是第一次使用Markdown的编辑环境,值得纪念一下!希望在以后学习linux的道路上能多多记录自己的学习心得和遇到问题的解决方法,朝着运维的方向迈出坚实的脚步. ...
- Sudo环境变量继承
sudo中默认配置会重置环境变量,所以使用sudo的时候需要小心这点.如何让sudo继承我们需要的环境变量?有如下两种方法: #sudo visudo 或者 #vi /etc/sudoers ...
- 一键设置Fluent环境变量小程序
使用视频教程优酷播放地址: https://v.youku.com/v_show/id_XNDU2MTkwNDg5Mg==.html?spm=a2hzp.8244740.0.0 一键设置环境变量小软件 ...
- Powershell环境变量
Powershell环境变量 9 12月, 2011 在 Powershell tagged 变量by Mooser Lee 本文索引 [隐藏] 1读取特殊的环境变量 2查找环境变量 3创建新的环境 ...
- MySQL基础之 path环境变量的作用 (科普)
在谈mysql配置环境变量之前,先谈一下windows环境变量的作用,有时候在windows cmd窗口运行命令时,经常会出现“XXX不是内部或外部命令的提示” 原因是系统没有找到执行相应命令的文件( ...
- py安装以及配置pip环境变量
安装python,安装包链接:https://pan.baidu.com/s/1u4tA-FJMxtrtJTap-zFh3g 密码:gh1c 默然安装到了C盘 安装pycharm:安装包链接:链接:h ...
- 【JDK配置原创】JDK(JRE)环境变量配置原理 --费元星
已经配置了很多次jdk了,每次都是安装网上的教程配的,今天突然想了解了解原理了,整理一下! 参考贴( http://blog.csdn.net/wkupaochuan/article/details/ ...
- 更优雅的配置:docker/运维/业务中的环境变量
目录 docker-compose 环境变量 .env 文件 env_file docker stack 不支持基于文件的环境变量 envsubst envsubst.py 1. 使用行内键值对 2. ...
- 【linux草鞋应用编程系列】_2_ 环境变量和进程控制
一. 环境变量 应用程序在执行的时候,可能需要获取系统的环境变量,从而执行一些相应的操作. 在linux中有两种方法获取环境变量,分述如下. 1.通过main函数的参数获取环境变量 ...
随机推荐
- oracle的START WITH CONNECT BY PRIOR用法
转自:https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html Oracle 树操作(select…start with…con ...
- mysql动态sql 整理多个字段
原始表: 整理后的表: 方案一(动态sql): BEGIN #Routine body goes here... DECLARE v1 ); DECLARE v2 ); #DECLARE v3 VAR ...
- npm安装出错的时候,如何使用国内的镜像!--解决办法
在前端开发领域,Node已经很普遍了,使用Node就会使用到一些包.所以常用的 npm 就会经常使用得到,但是在使用 npm 安装一些包的过程中,会发现安装的速度会很慢,而且很多时候直接安装不了. 百 ...
- jquery收集表单数组及去掉字符串最后的逗号!
jquery收集表单数组: <input type='text' name='one[]' value='' /><br> <input type='text' name ...
- Spring应用配置文件上传的两种方案
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- Nginx降权启动
给Nginx服务降权,用lol用户跑Nginx,给开发及运维设置普通账号,只要和lol同组即可管理Nginx,该方案解决了Nginx管理问题,防止root分配权限过大. 开发人员使用普 ...
- C#操作word之插入图片
假如我们导出一份简历到word文档,那势必可能要同时导出我们包含的简历,下面就来试一下如何和通过C#代码,将图片插入到word文档中. 为了简便起见,就简单一点.类似下面这样的 姓名 张三 照片 ...
- JavaCollection Java 集合框架
Spring Injecting Collection https://www.tutorialspoint.com/spring/spring_injecting_collection.htm No ...
- BBS - 后台管理
一.添加文章 注: 后台管理页面,应该有个新得 app /blog/backend/ # 文章列表页/blog/add_article/ # 添加文章 # 后台管理re_path(r'backend/ ...
- python基础之函数式编程、匿名函数、内置函数
一 函数式编程 不修改外部状态. 模仿数学里得函数进行编程. 用函数编程写出得代码相当精简. 可读性比较差. 例子: y=2*x+1 x=1 def test(x): return 2*x+1 tes ...