Wie kann ich Umgebungsvariablen für eine grafische Anmeldung unter Linux festlegen?

15

Ich suche nach einer Möglichkeit, beliebige Umgebungsvariablen für meine grafische Anmeldung unter Linux festzulegen. Ich spreche nicht über das Starten eines Terminals und das Exportieren von Umgebungsvariablen innerhalb des Terminals, da diese Variablen nur innerhalb dieses einen Terminals existieren. Ich möchte wissen, wie eine Umgebungsvariable festgelegt wird, die für alle in meiner grafischen Sitzung gestarteten Programme gilt.

Mit anderen Worten, womit ist Xorg vergleichbar ~/.bash_login?

Ryan C. Thompson
quelle

Antworten:

10

Sie können sie immer eingeben .profile, daher sollten sie sich bei jedem Login anmelden.

Probleme treten jedoch auf, wenn ein .bash_loginvorhanden ist: In diesem Fall wird die Bash nicht gelesen .profile.

Wenn Sie möchten, dass Ihre Variablen .profilesowohl in Bash als auch für andere Anmeldungen angewendet werden, verwenden Sie nicht .bash_login! Geben Sie .bashrcstattdessen bash-spezifische Variablen ein .

Oder alternativ auch .profileaus.bash_login

Chris Lercher
quelle
Danke, hat .profilefunktioniert.
Ryan C. Thompson
1
Außerdem ist .profile wirklich nett, weil ich jeden Bash-Code einfügen kann, den ich will. Ich kann also bestehende Umgebungsvariablen ergänzen und andere Dinge komplett erledigen.
Ryan C. Thompson
1
Es scheint, dass Sie dies für KDE eingeben ~/.kde/env/und damit beenden müssen .sh. Siehe die startkdeManpage.
Ryan C. Thompson
2
Eigentlich scheint das etwas komplizierter zu sein. Dies hängt von Ihrer Auswahlverteilung, der Desktopumgebung und sogar Ihrer Anmeldeshell ab. Für Gnome unter Ubuntu 10.04 müssen Sie Ihr Setup-Skript einfügen ~/.gnomerc, wie in /etc/X11/Xsession.d/55gnome-session_gnomerc.KDE gezeigt. Es liest das Profilskript für jede Shell, die Ihre Anmeldeshell ist. Wenn ja SHELL=bash, dann lautet es ~/.profile. Wenn ja SHELL=zsh, dann lautet es ~/.zprofile. Ich weiß nicht, was es für andere Muscheln tut.
Ryan C. Thompson
4

Meine .profileAufgabe ist mehr als nur das Festlegen von Umgebungsvariablen. Daher habe ich die Aufgaben zum Festlegen der Umgebung in eine .setenvDatei aufgeteilt, die nur die Umgebung festlegt. Um die Umgebung für X11 unter Debian einzurichten, fügte ich .xsessionrcin meinem Home Folgendes hinzu :

. ~/.setenv

Die Datei, die .xsessionrcdie Quellenangabe bewirkt , lautet /etc/X11/Xsession.d/40x11-common_xsessionrc.

Das Verwenden der Dateien, die bash zum Festlegen der Umgebung verwendet, hat nicht das getan, was ich wollte. Sicher, wenn ich eine Bash-Shell in X11 starten würde, würde ich die Umgebung bekommen, die ich wollte. Ich muss jedoch meinen PFAD festlegen, damit auf meiner Desktop-Umgebung die gewünschte Software ausgeführt wird. Beispielsweise verwende ich häufig benutzerdefinierte Versionen von Firefox, die außerhalb der üblichen Pfade installiert sind. Ich möchte, dass meine Desktop-Umgebung die richtige Version startet, anstatt alles zu verwenden, was in den Standardpfaden enthalten ist. Dazu muss PATH festgelegt werden, bevor die Desktop-Umgebung gestartet wird.

Louis
quelle
0

Xorg selbst hat keine, da es Ihre Programme nicht startet - es wäre der von Ihnen verwendete Display-Manager (gdm, xdm, xinit, startx usw.) oder Session-Manager (gnome-session, KDE usw.) , da dies die Eltern Ihrer Desktopsitzungsprozesse sind. Leider gibt es eine Vielzahl davon, jedes mit unterschiedlichen Startskripten / Punktedateien, so dass es keine einheitliche Antwort gibt. (Unter dem Client / Server-Modell von X befindet sich der X-Server möglicherweise nicht einmal auf demselben Computer wie die Clients, und er wird häufig als Root anstelle von Ihnen ausgeführt. Daher ist dies der falsche Ort für Einstellungen wie Umgebungsvariablen.)

alanc
quelle
Ich weiß, dass Xorg selbst nicht das ist, was ich mir ansehen möchte. Ich möchte nur wissen, wie ich meine Umgebungsvariablen in meiner X-Sitzung festlegen kann.
Ryan C. Thompson