it-swarm.com.de

Wo werden Umgebungsvariablen deklariert?

Was sind die richtigen Orte für:

  1. Globale Umgebungsvariablen, die alle Benutzer betreffen sollen?
  2. Benutzerspezifische Umgebungsvariablen?
59
Ivan

Ich denke die Community-Wiki-Seite zu Umgebungsvariablen wird Ihnen beim Aussortieren helfen

16
sagarchalise

Um die Antwort von sagarchalise zu ergänzen, kann ich zusammenfassen, was der Link als geeignete Orte für Einstellungen vorschlägt.

Für globale Einstellungen systemweite Umgebungsvariablen

  • Benutze /etc/environment
  • Verwenden Sie nicht /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.

Die Verwendung von /etc/profile ist ein sehr unixartiger Weg, aber seine Funktionalität ist unter Ubuntu stark eingeschränkt. Es existiert nur, um auf /etc/bash.bashrc zu zeigen und Einträge von /etc/profile.d zu sammeln.

Auf meinem System ist der einzige interessante Eintrag in profile.d /etc/profile.d/bash_completion.sh.

Für lokale oder benutzerspezifische Einstellungen

Eine frühere Version der Ubuntu-Seite hat ~/.pam_environment empfohlen, 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 einer davon existiert, führt bash ihn anstelle von ~/.profile aus, wenn bash als Anmeldeshell gestartet wird. Bash wird ~/.bash_profile dem ~/.bash_login vorziehen. [...] Diese Dateien haben standardmäßig keinen Einfluss auf eine Grafiksitzung. "

  • ~/.bashrc - "... kann der einfachste Ort sein, um Variablen zu setzen".
75
belacqua

Du hast:

/ etc/profile: Systemweite .profile-Datei für die Bourne-Shell (sh (1)) und 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 m das zu verstehen .

7
msw

Wie empfohlen unter https://help.ubuntu.com/community/EnvironmentVariables :

  1. Globale Umgebungsvariablen, die alle Benutzer betreffen sollen, sollten in /etc/environment eingetragen werden.

  2. Benutzerspezifische Umgebungsvariablen sollten in ~/.pam_environment gesetzt werden.

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.

Mein ~/.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 bei mir nicht funktionieren. Ich habe mein Login mehrmals gemauert und versucht, es zu umgehen, also bleibe ich bei der hässlichen statischen Kopie der Standardeinstellungen :)

Problemumgehung für verschlüsselte private Ordner

Wenn Sie in Ubuntu-Versionen bis einschließlich Precise 12.04 Beta 2 ein verschlüsseltes Basisverzeichnis verwenden, müssen Sie /etc/pam.d/common-session ändern, damit es ~/.pam_environment lädt. Diese Lösung funktioniert anscheinend für frühere Versionen, ich habe sie jedoch nicht getestet.

Günther Montag (g-montag) schrieb am 19.08.2010:

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

5
Alain O'Dea