# How do I set persistent environment variables for root?

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?

-

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.

-
Does not work, /etc/environemnt variables are not set for sudo –  Frederic Yesid Peña Sánchez Jan 24 at 13:49

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

-