¿Cómo configuro variables de entorno persistentes para root?

40

Para crear variables de entorno persistentes, agrego el archivo de script al directorio /etc/profile.d, por ejemplo:

# mi guión
export MY_VAR = var_value

Esto funciona correctamente para el usuario actual:

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

Ahora necesito las mismas variables de entorno para el usuario root, pero el script /etc/profile.d no funciona para 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 # 

¿Cómo puedo configurar las mismas variables para la raíz?

Alex F
fuente
2
Esta pregunta sobre cómo preservar una variable particular del entorno de la persona que llama cuando se ejecuta sudoestá muy relacionada. (Pero no es un duplicado porque esta pregunta es acerca de cómo personalizar el entorno propio de la raíz ).
Eliah Kagan

Respuestas:

44

sudo normalmente no conserva las variables de entorno local. Debe usarlo con el -Einterruptor para hacerlo, es decir sudo -E su, conservará $ MYVAR para root.

Alternativamente, para crear variables persistentes que realmente abarquen todo el sistema, debe configurarlas /etc/environment.

ish
fuente
14
No funciona, las variables / etc / environemnt no están configuradas para sudo
Frederic Yesid Peña Sánchez
3
@ FredericYesidPeñaSánchez lo hizo por mí en CentOS. No FOO=bar
escribes
10

Al igual que el proceso que define su propia variable de entorno, por ejemplo, editando '~ / .bashrc', puede definir la variable de entorno de la raíz editando '/root/.bashrc'.

ppppplv
fuente
8

Defaults env_reseten /etc/sudoersrestablecerá la raíz PATHdefinida por /etc/environment.

Puede modificarlo Defaults !env_resetpara deshabilitar el reinicio o agregar:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
diyism
fuente
Si quiero usar la segunda solución (significa agregar ruta a secure_path), ¿cuál es la clave? el camino es solo valor. Quiero agregar ANDROID_NDK a las variables de entorno para root. Entonces, por ahora, solo estoy usando el primero (! Env_reset). Gracias.
Dr.jacky