我在 /etc/profile.d/somescript.sh 的脚本文件中设置了一个变量,我修改了 /etc/sudoers 并将“ansible”用户添加到 sudoers 文件中,如下所示:
Defaults !env_reset
ansible ALL=(ALL) NOPASSWD: ALL
为什么第一行没有输出任何内容?为什么“sudo env”不显示所有环境变量(仅部分)?
[ansible@ACEPP-LM-01 ~]$ sudo env | grep ENV
[ansible@ACEPP-LM-01 ~]$ sudo echo $ENV
PP
[ansible@ACEPP-LM-01 ~]$ echo $ENV
PP
[ansible@ACEPP-LM-01 ~]$ env | grep ENV
ENV=PP
我需要的解决方案是在 root 和用户 ansible 的 ~/.bashrc 中放置一个别名 sudo="sudo -i" 。
答案1
尝试使用-E
以下参数sudo
:
-E, --preserve-env
Indicates to the security policy that the user wishes to pre‐
serve their existing environment variables. The security
policy may return an error if the user does not have permis‐
sion to preserve the environment.