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

Ale*_*x F 50 root environment-variables

要创建持久环境变量,我将脚本文件添加到 /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# 

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

ish*_*ish 56

sudo通常不保留本地环境变量。您应该将它与-E开关一起使用,即sudo -E su会为 root保留$MYVAR

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

  • 不起作用,没有为 sudo 设置 /etc/environemnt 变量 (18认同)
  • @FredericYesidPeñaSánchez 在 CentOS 上为我做了。你不用在那里写脚本,你只是在每一行上做简单的分配,即`FOO=bar` (4认同)
  • 谢谢,工作了。重新启动我的终端后(不是之前),`/etc/environment` 值可以作为 root 使用 (2认同)

diy*_*ism 10

Defaults env_resetin/etc/sudoers将重置PATH/etc/environment.

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

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
Run Code Online (Sandbox Code Playgroud)


ppp*_*plv 10

就像你定义自己的环境变量的过程,例如通过编辑'~/.bashrc',你可以通过编辑'/root/.bashrc'来定义root的环境变量。