Ich habe kürzlich /etc/environment
entdeckt , was eine üblichere Methode zum Einrichten einfacher Umgebungsvariablen als Skripte zu sein scheint, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, Umgebungsvariablen in der /etc/environment-Datei rückzuverweisen.
Das heißt, ich habe dies:
JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Wenn ich versuche, $JAVA_HOME/bin
hinzuzufügen zur PATH-Definition bekomme ich jedoch $JAVA_HOME/bin und nicht die interpolierte Variable. Um dies zu beheben, erstelle ich „environment.sh“ in „profile.d“, um den /bin
hinzuzufügen Einträge in den Pfad, aber das scheint schlampig und unorganisiert.
Gibt es eine Möglichkeit, die Umgebungsvariablen in /etc/environment rückzuverweisen?
Beste Antwort
Die /etc/environment
Datei wird von pam_env
gelesen PAM-Modul. Es unterstützt nur einfache Schlüssel-Wert-Paare ohne Substitution auf der rechten Seite.
Wenn Sie den Wert mit Substitutionen oder anderen Shell-Erweiterungen aufbauen möchten, müssen Sie eine Shell durchlaufen. /etc/profile
(oder eine Datei in /etc/profile.d
) ist der richtige Ort dafür. Dies ist der traditionelle Ort (/etc/environment
ist eine relativ neue Innovation in der Geschichte der Unix-Systeme), und es ist sicherlich nichts nachlässig, es zu verwenden. Der Hauptvorteil von /etc/environment
ist, dass es das Setzen von Umgebungsvariablen auch bei Login-Methoden erlaubt, die keine Shell beinhalten, oder für Benutzer, die eine Nicht-Bourne-Shell verwenden, aber diese sind in der Praxis nicht üblich.