Wie setze ich persistente Umgebungsvariablen für root?

40

Um persistente Umgebungsvariablen zu erstellen, füge ich die Skriptdatei zum Verzeichnis /etc/profile.d hinzu, zum Beispiel:

# mein Drehbuch
export MY_VAR = var_value

Dies funktioniert ordnungsgemäß für den aktuellen Benutzer:

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

Jetzt benötige ich die gleichen Umgebungsvariablen für den Root-Benutzer, aber das Skript /etc/profile.d funktioniert nicht für den Root-Benutzer:

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 # 

Wie kann ich die gleichen Variablen für die Wurzel einstellen?

Alex F
quelle
2
Diese Frage, wie eine bestimmte Variable während der Ausführung aus der Umgebung des Aufrufers beibehalten werden kann , sudoist sehr verwandt. (Aber es ist kein Duplikat , weil diese Frage ist , wie root anpassen eigene Umgebung.)
Eliah Kagan

Antworten:

44

sudo speichert normalerweise keine lokalen Umgebungsvariablen. Sie sollten es mit dem -ESchalter verwenden, um dies zu tun, dh $ MYVAR für root sudo -E suwird beibehalten .

Um dauerhafte Variablen zu erstellen, die wirklich systemweit sind, sollten Sie sie alternativ festlegen /etc/environment.

ish
quelle
14
Funktioniert nicht, / etc / environemnt-Variablen sind nicht für
Sudo
3
@ FredericYesidPeñaSánchez hat es für mich auf CentOS gemacht. Sie schreiben dort keine FOO=bar
Skripte
10

So wie Sie Ihre eigene Umgebungsvariable definieren, beispielsweise durch Bearbeiten von '~ / .bashrc', können Sie die Umgebungsvariable von root durch Bearbeiten von '/root/.bashrc' definieren.

ppppplv
quelle
8

Defaults env_resetin /etc/sudoerssetzt root's zurück, PATHdefiniert durch /etc/environment.

Sie können es ändern Defaults !env_reset, um das Zurücksetzen zu deaktivieren oder Folgendes hinzuzufügen:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
Diyismus
quelle
Wenn ich die zweite Lösung verwenden möchte (dh Pfad zu secure_path hinzufügen), was ist der Schlüssel ?! Pfad ist nur Wert. Ich möchte ANDROID_NDK zu Umgebungsvariablen für root hinzufügen. Daher verwende ich im Moment nur die erste (! Env_reset). Danke.
Dr.jacky