我有 RHEL 7 并且我想为 sudo 设置环境变量。
我已运行sudo su
以切换到 root 用户并添加export
到其.bashrc
文件。然后我使用 重新加载它们source
。
现在,当我env
以root
模式运行时,它具有环境变量。但是,当我退出并运行时,sudo env
它却没有。
为什么会发生这种情况?
答案1
sudo
在其自己的有限环境中运行程序(请参阅手册中的“环境”部分man sudo
)。它不会隐式使用bash
来运行程序,因此~/.bashrc
不会运行,但您可以显式调用它:
sudo bash --rcfile=~root/.bashrc -c ProgramAndParameters
您可以在运行字符串中设置环境变量:
sudo variable=value ProgramAndParameters
默认情况下,您可以使用别名或函数来执行其中任一操作。
您也可以选择添加环境文件/etc/sudoers
(请参阅man sudoers
以了解更多信息)。
答案2
sudoers 输入如下
%DBTEAM ALL = (oracle) NOPASSWD: ALL
DBTEAM--> 组名
oracle --> oracle 用户名
切换到没有环境变量的目标用户
sudo -s -u oracle
切换到目标用户使用环境变量
sudo -i -u oracle