Ich möchte nur eine systemweite Umgebungsvariable JAVA_HOME
für alle Benutzer einrichten , einschließlich des Root- Benutzers.
Bedarf:
- für normale Benutzer zugänglich
- zugänglich für root
- immer geladen, nicht nur für Bash (Gnome-Terminal startet standardmäßig keine Bash)
- auf Ubuntu, Debian und optional Red Hat zu arbeiten
- großartig, wenn das Hinzufügen einfach per Skript erfolgen könnte
Antworten:
Da hier niemand eine vollständige Antwort hinzugefügt hat, halte ich dies derzeit für das Beste, zumindest für Ubuntu. Ich bin jedoch offen, die Antwort für andere * nix-Plattformen anzupassen.
Andere Optionen, die bereits in Betracht gezogen, aber ausgeschlossen wurden:
/etc/environment
funktioniert, ist aber schwieriger zu warten, da andere Tools oder Benutzer es bearbeiten können./etc/profile
- das gleiche wie obenquelle
Unter Debian / Ubuntu wäre das / etc / environment
Ich kenne das Red Hat-Äquivalent nicht.
quelle
/etc/environment
. Siehe auch serverfault.com/a/584072/26218Ich verstehe nicht, warum Sie / etc / profile ausgeschlossen haben. Das ist der richtige Ort.
quelle
Einige haben geantwortet, dass
/etc/environment
es in Debian depriziert und / oder nicht mehr verwendet wird, und dies ist (wie in Version 7) falsch.Die Datei wird tatsächlich von PAM-spezifisch
pam_env(8)
über eine Voreinstellung desenvfile
Flags gelesen . Die Manpage gibt diese Standardeinstellung auch im Abschnitt FILES an.In den angeführten Wikis (insbesondere in der Ländereinstellung) wird lediglich angegeben, dass die auf der Ländereinstellung basierenden Umgebungsvariablen jetzt verwendet werden sollen
/etc/profile
. Ihre Aussage "(in älteren Debian-Versionen auch / etc / environment)" ist vage und steht im Zusammenhang mit Gebietsschemata.Ein kurzer Blick durch die
/etc/pam.d
Shows:Diese Konfigurationszeilen sind additiv und da die erste fehlt
envfile
, ist sie standardmäßig auf gesetzt/etc/environment
.All dies setzt natürlich voraus, dass die von Ihnen verwendeten Binärdateien (
crond
Login-Shells usw.) gegen PAM kompiliert werden.Letztendlich impliziert dies, dass andere Systeme, die PAM verwenden (z. B. RedHat), sich gleich verhalten, wie in der jeweiligen Manpage zu sehen ist.
quelle
Eine Randnotiz: Schauen Sie sich die Modulumgebung an . Ich benutze dies jedes Mal, wenn ich Dutzenden oder Hunderten von Benutzern eine komplexe, versionierte, selbst erweiterbare, übersichtliche UNIX-Umgebung anbieten muss. Es wird hauptsächlich in HPC-Umgebungen mit mehreren Benutzern in großem Maßstab verwendet. Wenn Sie es nur für eine bestimmte Variable verwenden, wird es sicherlich überentwickelt, aber wenn Sie mehr als ein paar Softwarepakete und deren Umgebung benötigen, ist es eine großartige Arbeit.
quelle
/etc/profile
sollte arbeiten. Getestet habe ich jetzt nur um sicher zu sein, setzen Sieexport SOMETEST=1234
auf/etc/profile
und nach dem Wieder Protokollierungecho $SOMETEST
gab mir1234
wie erwartet. Auch ausgnome-terminal
quelle
/etc/enviroment
wird in der letzten stabilen Veröffentlichung von Debian nicht verwendet. Die Empfehlung ist es, eine eigene*.sh
Datei/etc/profile.d/
für diesen Zweck zu erstellen, wie Sorin S sagte. Siehe https://wiki.debian.org/EnvironmentVariablesquelle
In diesem Fall können Sie keine spezifischen Dateien verwenden. so....
/etc/profile
wäre in diesem Fall der richtige Ort dafür. Derzeit angemeldete Benutzer müssen zwar eine neue Anmeldesitzung erhalten, dies sollte jedoch kein so großes Problem darstellen.@ wk01:
/etc/profile
wird standardmäßig nicht von einer nicht angemeldeten Shell geladen. Sie.bashrc
laden es wahrscheinlich ...quelle