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

40

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

# mon script
exportation 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
var_value
alex @ alex-64: ~ $ sudo su
root @ alex-64: / home / alex # echo $ MY_VAR

root @ alex-64: / home / alex # 

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

Alex F
la source
2
Cette question sur la façon de préserver une variable particulière de l' environnement de l' appelant lors de l'exécution sudoest très liée. (Mais il est pas un doublon parce que cette question est sur la façon de personnaliser root propre environnement.)
Eliah Kagan

Réponses:

44

sudo ne conserve normalement pas les variables d'environnement locales. Vous devez l’utiliser avec le -Ecommutateur pour le faire, c’est-à-dire sudo -E suque vous conserverez $ MYVAR pour root.

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

ish
la source
14
Ne fonctionne pas, les variables / etc / environemnt ne sont pas définies pour sudo
Frederic Yesid Peña Sánchez
3
@ FredericYesidPeñaSánchez, il l'a fait pour moi sur CentOS. Vous n'écrivez pas dans le script, vous ne faites que des tâches simples sur chaque ligne, c'estFOO=bar
iamyojimbo
10

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'.

ppppplv
la source
8

Defaults env_resetin /etc/sudoersréinitialisera la racine PATHdéfinie par /etc/environment.

Vous pouvez le modifier Defaults !env_resetpour désactiver la réinitialisation ou ajouter:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
diyisme
la source
Si je veux utiliser la deuxième solution (signifie ajouter chemin d'accès à chemin_sécurisé), quelle est la clé?! chemin est juste valeur. Je souhaite ajouter ANDROID_NDK aux variables d'environnement pour root. Donc pour l'instant, je viens d'utiliser le premier (! Env_reset) .Merci.
Dr.jacky