如何为 root 设置持久环境变量?

如何为 root 设置持久环境变量?

为了创建持久环境变量,我将脚本文件添加到 /etc/profile.d 目录,例如:

# 我的脚本
导出 MY_VAR=var_value

这对于当前用户来说正常工作:

alex@alex-64:~$ echo $MY_VAR
变量值

现在我需要为 root 用户设置相同的环境变量,但是 /etc/profile.d 脚本对 root 不起作用:

alex@alex-64:~$ echo $MY_VAR
变量值
alex@alex-64:~$ sudo su
root@alex-64:/home/alex# echo $MY_VAR

root@alex-64:/home/alex#

我如何为根设置相同的变量?

答案1

须藤通常不保存本地环境变量。您应该将其与开关一起使用-E,即sudo -E su保存$MYVAR对于根。

或者,要创建真正系统范围的持久变量,您应该在中设置它们/etc/environment

答案2

Defaults env_reset/etc/sudoers重置PATH由 定义的根/etc/environment

您可以修改它以Defaults !env_reset禁用重置或添加:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

答案3

与您定义自己的环境变量的过程类似,例如通过编辑“~/.bashrc”,您可以通过编辑“/root/.bashrc”来定义 root 的环境变量。

答案4

您可以使用标志传递环境变量env。我总是需要绕过代理,这对我来说是个老问题。尤其是当您需要传递PATH和代理环境变量时。

命令:

sudo env "ENV=$ENV1" "ENV2=$ENV2" [command]

您还可以将其添加为别名(添加此.bashrc.bash_aliases等等.zshrc)。

我的别名示例:

alias psudo='sudo env "PATH=$PATH" "HTTP_PROXY=$HTTP_PROXY" "HTTPS_PROXY=$HTTPS_PROXY" "http_proxy=$http_proxy" "https_proxy=$http_proxy"'

请注意,这显然会降低 sudo 的安全性。

相关内容