web-dev-qa-db-fra.com

Comment définir des variables d'environnement persistantes pour root?

Pour créer des variables d’environnement persistantes, j’ajoute le fichier de script au répertoire /etc/profile.d, par exemple:

 # mon script 
 exporter MY_VAR = valeur_var 

Cela fonctionne correctement pour l'utilisateur actuel:

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

Maintenant, j'ai besoin des mêmes variables d'environnement pour l'utilisateur root, mais le script /etc/profile.d ne fonctionne pas pour root:

 alex @ alex-64: ~ $ echo $ MY_VAR 
 valeur_variable 
 alex @ alex-64: ~ $ Sudo su 
 racine @ alex-64:/home/alex # echo $ MY_VAR 
 
 racine @ alex-64:/home/alex # 

Comment définir les mêmes variables pour la racine?

40
Alex F

Sudo ne conserve normalement pas les variables d'environnement locales. Vous devez l’utiliser avec le commutateur -E pour le faire, c’est-à-dire que Sudo -E su conservera $ MYVAR pour root.

Sinon, pour créer des variables persistantes véritablement à l'échelle du système, vous devez les définir dans /etc/environment.

42
ish

Comme pour le processus, vous définissez votre propre variable d'environnement, par exemple en éditant '~/.bashrc', vous pouvez définir la variable d'environnement de la racine en éditant '/root/.bashrc'.

9
ppppplv

Defaults env_reset in /etc/sudoers réinitialisera le PATH de la racine défini par /etc/environment.

Vous pouvez le modifier en Defaults !env_reset pour désactiver la réinitialisation ou ajouter:

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