43

To create persistent environment variables, I add the script file to /etc/profile.d directory, for example:

# my script
export MY_VAR=var_value

This works properly for current user:

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

Now I need the same environment variables for the root user, but /etc/profile.d script doesn't work for 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# 

How can I set the same variables for the root?

48

sudo does not normally preserve local environment variables. You should use it with the -E switch to do so, i.e. sudo -E su will preserve $MYVAR for root.

Alternatively, to create persistent variables that are truly system-wide, you should set them in /etc/environment.

  • 16
    Does not work, /etc/environemnt variables are not set for sudo – Frederic Yesid Peña Sánchez Jan 24 '15 at 13:49
  • 4
    @FredericYesidPeñaSánchez it did for me on CentOS. You don't script in there, you just do simple assignments on each line, i.e. FOO=bar – iamyojimbo Oct 5 '16 at 22:25
  • 1
    Thanks, worked. /etc/environment values were available as root after restarting my terminal (not before) – NS du Toit Jan 16 at 11:32
10

Like the process you define your own environment variable, for example by editing '~/.bashrc', you can define root's environment variable by editing '/root/.bashrc'.

8

Defaults env_reset in /etc/sudoers will reset root's PATH defined by /etc/environment.

You could modify it to Defaults !env_reset to disable resetting or add:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
  • If I want to use the second solution(means add path to secure_path), what is key?! path is just value. I want to add ANDROID_NDK to environment variables for root. So for now, I just using the first one(!env_reset).Thanks. – Dr.jacky Dec 6 '15 at 6:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.