sudo如何保持当前用户的环境变量?

现象,我在/etc/profile里设置全局代理,然后使用命令

1、curl http://www.baidu.com  走代理

2、sudo curl http://www.baidu.com 并没有走代理

使用env和sudo env查看环境变量,发现代理设置只存在于env里,sudo env里并没有代理的信息

那么如何使用sudo的时候,把环境变量也带进去呢?

方法一、

/etc/sudoers中添加以下内容作用相同:

Defaults !env_reset

方法二、

可以把需要传递环境变量的命令设置到env_keep

Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"

传递命令别名

当前用户的命令别名不会应用到sudo。如果需要这样,只需在~/.bashrc或者/etc/bash.bashrc中加入:

alias sudo=‘sudo ‘

参考:

1、https://www.ibm.com/developerworks/cn/aix/library/au-sudo/

2、https://wiki.archlinux.org/index.php/Sudo_%28简体中文%29

3、http://blog.csdn.net/dabao1989/article/details/51955559

时间: 2024-10-05 23:09:56

sudo如何保持当前用户的环境变量?的相关文章

在Windows系统上以C++打印出当前活动用户的环境变量

在Windows系统上以C++打印出当前活动用户的环境变量,代码如下(QT环境): [cpp] view plain copy void getEnvironmentVariables() { DWORD sessionId = WTSGetActiveConsoleSessionId(); qInfo() << "Session ID = " << sessionId; HANDLE token; if (!WTSQueryUserToken(sessionI

Linux命令之env:显示当前用户的环境变量

Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令.下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的变量;env命令显示当前用户的变量;export命令显示当前导出成用户变量的shell变量.每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,但shell自己的变量不同sh

Linux_note shell 特性、变量、系统和用户的环境变量配置文件。

shell是一种程序设计语言,是一个命令解释器,就是解释我们输入的命令为内核. 他又分为两种,交互式模式就是shell等待你的输入,并且执行你提交的命令:非交互式模式,不与你进行交互 ,而是读取存放在文件中的命令,并且执行它们. unix下的shell 有:C shell / bash / sh / ksh / csh:我们遇到的就是这些吧 1.shell特性 命令历史文件root用户在家目录下.bash_history即/root/.bash_history默认保存1000条,通过变$HIST

用户的环境变量

用户的环境变量设定文件,在每个用户的家目录里都会有下面四个文件.bash_logout    --用户登出后执行的    可以在这里加上清除.bash_history    --用户的历史命令存放的地方  用history命令可以查看,它不记录当前会话用过的命令,当你退出时,它才会记录你退出前所操作的命令.bash_profile    --用户的环境变量设定的地方    用户登录时执行.bashrc        --别名设定的文件        用户登录时执行 # vim /home/abc

获得当前用户的环境变量

1 Context ctx = SysContext.getSysContext()://获得当前用户的环境变量 2 SysContext.getSysContext().getCurrentUserInfo() //取得用户信息 3 SysContext.getSysContext().getCurrentFIUnit();// 获取当前财务组织信息

Linux用户换环境变量

一.环境变量 用户登录Linux系统后,操作系统会自动配置好工作环境-语言.家目录.邮箱目录.命令搜索路径.终端类型.用户名.命令提示符等.用户的工作环境由一系列的环境变量定义.格式如下: 环境变量名=值 环境变量由大小写字母.数字._.组成,一般大写. 常见的用户环境变量: LANG=zh_CN.UTF-8,语言定义为UTF-8 HOMS=/home/zsan,用户家目录 LOGNAME=zsan,用户名 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local

sudo执行脚本找不到环境变量解决方法

问题: 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本, 然后再sudo执行脚本,就找不到变量,未能获取到值. 原因 sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前设置的变量都会失效,只有少数配置文件中指定的环境变量能保存下来. sudo的配置文件是 /etc/sudoers 需要root权限才能读取: 在/etc/sudoers中修改:Defaults    env_reset为:Defaults   

系统和用户的环境变量配置文件

上面讲了很多系统的变量,那么在linux系统中,这些变量被存到了哪里呢,为什么用户一登陆shell就自动有了这些变量呢? /etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等等. /etc/bashrc :这个文件主要预设umask以及PS1.这个PS1就是我们在敲命令时,前面那串字符了,例如阿铭的linux系统PS1就是 [[email protected] ~

Linux为用户设定环境变量

今天在做从将MySQL中的数据同步到ES的时候,当启动脚本程序报错: Exception in thread "main" java.lang.UnsupportedClassVersionError: org/xbib/tools/Runner : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defi