Antworten:
Ich denke, die Community-Wiki-Seite zu Umgebungsvariablen wird Ihnen beim Aussortieren helfen
Um die Antwort von sagarchalise zu ergänzen, kann ich zusammenfassen, was der Link als geeignete Orte für Einstellungen vorschlägt.
/etc/environment
/etc/profile
oder/etc/bash.bashrc
Von der Seite:
/etc/environment
[...] ist speziell für systemweite Einstellungen von Umgebungsvariablen gedacht. Es ist keine Skriptdatei, sondern besteht aus Zuweisungsausdrücken, einer pro Zeile. Insbesondere werden in dieser Datei die systemweiten Einstellungen für das Gebietsschema und den Pfad gespeichert.
Verwenden /etc/profile
ist ein sehr unixmäßiger Weg, aber seine Funktionalität ist unter Ubuntu stark eingeschränkt. Es existiert nur /etc/bash.bashrc
, um auf Einträge zu verweisen und diese zu sammeln /etc/profile.d
.
Auf meinem System ist der einzige interessante Eintrag in profile.d /etc/profile.d/bash_completion.sh
.
Eine frühere Version der Ubuntu-Seite wird empfohlen ~/.pam_environment
, aber die Seite schlägt derzeit vor, dass Sie verwenden sollten, wenn dies nicht funktioniert
~/.profile
- Dies ist wahrscheinlich die beste Datei zum Platzieren von Umgebungsvariablenzuweisungen, da sie automatisch vom DisplayManager während des Startvorgangs der Desktopsitzung sowie von der Anmeldeshell ausgeführt wird, wenn man sich über die Textkonsole anmeldet.
~/.bash_profile
oder ~./bash_login
- Wenn eines davon existiert, führt bash es aus, anstatt ~/.profile
wenn bash als Login-Shell gestartet wird. Bash werden es vorziehen , ~/.bash_profile
zu ~/.bash_login
. [...] Diese Dateien haben standardmäßig keinen Einfluss auf eine Grafiksitzung. "
~/.bashrc
- "... kann der einfachste Ort sein, um Variablen zu setzen". /etc/environment
wann? Es scheint nicht mit Cron zu funktionieren, auch wenn es verwendet wirdSHELL=/bin/bash
/etc/environment
mögen JAVA_HOME="/opt/java"
und ANT_HOME="/opt/ant"
wie es geht
Du hast:
/ etc / profile: Systemweite .profile-Datei für die Bourne-Shell (sh (1)) und die Bourne-kompatiblen Shells (bash (1), ksh (1), ash (1), ...).
die in Lucid und Maverick laufen
/etc/profile.d/*.sh
falls vorhanden und falls die Shell des Benutzers bash ist:
/etc/bash.bashrc
Für die Benutzerumgebung gibt es ein verwirrendes Array, das spezifisch für die Shell ist und angibt, ob sie als "Anmeldeshell" betrachtet wird. Wenn die Shell bash ist:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
für sh / dash:
$HOME/.profile
für zsh werde ich nicht einmal versuchen , dies zu verstehen .
Wie auf https://help.ubuntu.com/community/EnvironmentVariables empfohlen :
Globale Umgebungsvariablen, die alle Benutzer betreffen sollen, sollten berücksichtigt werden /etc/environment
.
Benutzerspezifische Umgebungsvariablen sollten eingestellt werden ~/.pam_environment
.
Vermeiden Sie die Profil- und RC-Dateien zum Setzen von Umgebungsvariablen unter Ubuntu. Sie haben mir mehr Kopfschmerzen verursacht, als sie wert sind.
Das ist aber leichter gesagt als getan;)
Es ist möglich, dass Sie auf dieselbe Konfigurationslücke stoßen, die für mich bestand. Siehe die Problemumgehung für verschlüsseltes Zuhause weiter unten.
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
Warum der hässliche statische Pfad? ${PATH}
würde nicht für mich arbeiten. Ich habe mein Login mehrmals gemauert und versucht, es zu umgehen, also bleibe ich bei der hässlichen statischen Kopie der Standardeinstellungen :)
Wenn Sie in Ubuntu-Versionen bis einschließlich Precise 12.04 Beta 2 ein verschlüsseltes Basisverzeichnis verwenden, müssen Sie Änderungen vornehmen /etc/pam.d/common-session
, damit es geladen wird ~/.pam_environment
. Diese Lösung funktioniert anscheinend für frühere Versionen, ich habe sie jedoch nicht getestet.
Dies scheint ein Problem bei verschlüsselten Home-Verzeichnissen zu sein. Ich fügte hinzu
Sitzung erforderlich pam_env.so
am Ende von /etc/pam.d/common-session und jetzt wird ~ / .pam_environment gelesen. Auf einem anderen System ohne verschlüsselte Home-Verzeichnisse (auch 10.04) ist die Umgehung nicht erforderlich. Vielleicht versucht das System in meinem Fall, ~ / .pam_environment zu lesen, bevor es entschlüsselt wird.
Angepasst von meiner Antwort auf Super User: https://superuser.com/a/408373/66856
${HOME}
wird auch nicht funktionieren. Es gibt keine Erweiterung in .pam_environment
.
.pam_environment
, aber HOME
ist normalerweise nicht so früh eingestellt. Wenn diese Zeile gelesen hätte DEFAULT=${PATH}/Applications/jdk
, hätten Sie den Wert von darin PATH
eingefügt gesehen.