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


40

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

#我的剧本
导出MY_VAR = var_value

这对于当前用户正常运行:

alex @ alex-64:〜$ echo $ MY_VAR
var_value

现在,我需要root用户使用相同的环境变量,但是/etc/profile.d脚本不适用于root用户:

alex @ alex-64:〜$ echo $ MY_VAR
var_value
alex @ alex-64:〜$ sudo su
root @ alex-64:/ home / alex#echo $ MY_VAR

root @ alex-64:/ home / alex# 

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


2
关于如何在运行时从调用者的环境中保留特定变量问题sudo非常相关。(但这不是重复的,因为这个问题是关于如何自定义root 自己的环境的。)
Eliah Kagan 2015年

Answers:


44

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

另外,要创建真正在系统范围内的持久变量,应在中设置它们/etc/environment


14
不起作用,未为sudo设置/ etc / environemnt变量
Frederic YesidPeñaSánchez2015年

3
@FredericYesidPeñaSánchez它在CentOS上为我做了。您无需在其中编写脚本,只需在每行上进行简单的分配即可,即FOO=bar
iamyojimbo

10

就像您定义自己的环境变量的过程一样(例如,通过编辑'〜/ .bashrc'),您可以通过编辑'/root/.bashrc'来定义root的环境变量。


8

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

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

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

如果我想使用第二种解决方案(意味着将路径添加到secure_path),那么关键是什么?路径就是价值。我想将ANDROID_NDK添加到root的环境变量中。所以现在,我只使用第一个(!env_reset)。
Dr.jacky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.