Come posso impostare variabili di ambiente persistenti per root?


40

Per creare variabili di ambiente persistenti, aggiungo il file di script alla directory /etc/profile.d, ad esempio:

# la mia sceneggiatura
export MY_VAR = var_value

Funziona correttamente per l'utente corrente:

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

Ora ho bisogno delle stesse variabili di ambiente per l'utente root, ma lo script /etc/profile.d non funziona per 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 # 

Come posso impostare le stesse variabili per il root?


2
Questa domanda su come preservare una particolare variabile dall'ambiente del chiamante durante l'esecuzione sudoè molto correlata. (Ma non è un duplicato perché questa domanda riguarda come personalizzare il proprio ambiente di root .)
Eliah Kagan

Risposte:


44

normalmente sudo non conserva le variabili di ambiente locali. Dovresti usarlo con l' opzione per -Efarlo, cioè sudo -E sumanterrai $ MYVAR per il root.

In alternativa, per creare variabili persistenti che siano veramente a livello di sistema, è necessario impostarle /etc/environment.


14
Non funziona, le variabili / etc / environment non sono impostate per sudo
Frederic Yesid Peña Sánchez

3
@ FredericYesidPeñaSánchez ha fatto per me su CentOS. Non FOO=bar
scrivi

10

Come il processo che definisci la tua variabile d'ambiente, ad esempio modificando '~ / .bashrc', puoi definire la variabile d'ambiente di root modificando '/root/.bashrc'.


8

Defaults env_resetin /etc/sudoersripristinerà il root PATHdefinito da /etc/environment.

È possibile modificarlo Defaults !env_resetper disabilitare il ripristino o aggiungere:

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

Se voglio usare la seconda soluzione (significa aggiungere percorso a secure_path), qual è la chiave ?! il percorso è solo valore. Voglio aggiungere ANDROID_NDK alle variabili di ambiente per root. Quindi, per ora, ho appena usato il primo (! Env_reset). Grazie.
Dr.jacky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.