Ich verwende zsh und gdm, um gnome auszuführen. Vor einiger Zeit habe ich festgestellt, dass Variablen nicht richtig eingestellt sind. Zum Beispiel sind LANG / LC_ALL falsch ( ""
anstelle von en_GB.UTF-8
).
Ich teilte das .zshrc
in .zshrc
und auf .profile
. In letzterem setze ich die Umgebungsvariablen, aber wie kann ich die Variablen setzen, bevor die Sitzung beginnt? Ich habe ein paar Möglichkeiten ausprobiert ( .xinitrc
, .xsessionrc
), aber keine schien zu funktionieren.
Bearbeiten Zur Verdeutlichung - Ich habe es verwendet .profile
und manuell eingespeist .zshrc
. Es ändert sich die Frage sowieso nicht.
gnome
desktop-environment
gentoo
gdm
environment-variables
Maciej Piechotka
quelle
quelle
.profile
nicht geladen oder überschreibt etwas anderes die Gebietsschemavariablen? (Versuchen Sie eine andere Variable Einstellung wieexport MACIEJ_PROFILE=yes
sicher zu machen.set -x
In.profile
kann einen guten Weg, um zu überprüfen , was in und nach ausgeführt wird.profile
, wenn es überhaupt gelesen hat.) Es gibt keinen Punkt in der Beschaffung.profile
von.zshrc
.ssh localhost zsh
? Was istssh localhost bash
? Wenn bash ok ist, aber nicht zsh, dann legst du vielleicht etwas hinein/etc/zshenv
oder~/.zshenv
(was so ziemlich immer eine schlechte Idee ist).gnome-session
diese Variablen nicht gesetzt sind.Antworten:
Die einfache Möglichkeit besteht darin, eine Zeitmaschine zu erfinden, die verschiedenen Personen zu besuchen, die Shell-Startdateien erstellt haben, und sie anzuweisen, drei Dinge sauber zu unterscheiden:
startx
;Es ist nicht allzu schwer, Session vs. Shell auf tragbare Weise richtig zu machen: Die Initialisierung zur Anmeldezeit erfolgt in
.profile
(oder.zprofile
oder.login
), die Shell-Initialisierung in.bashrc
oder.zshrc
. Ich habe vorher geschrieben über.bash_profile
, zsh gegen andere Schalen , mehr über die Portabilität (meist über bash) , mehr darüber , wer liest.profile
.Ein verbleibendes Problem ist die Unterscheidung zwischen Sitzungsaufbau und Sitzungsstart.
~/.profile
Wird in den meisten Fällen ausgeführt, wenn Sie sich anmelden, und kann als beides verdoppelt werden. Es gibt jedoch Ausnahmen:~/.login
und~/.zprofile
anstelle von sourced verwendet wird~/.profile
. Das Gleiche gilt für bash und~/.bash_profile
, aber dies lässt sich leicht durch die Beschaffung~/.profile
von lösen~/.bash_profile
.~/.profile
hängt das Lesen von Ihrer Version des Programms, Ihrer Distribution (Linux oder anders) und dem von Ihnen ausgewählten Sitzungstyp ab..profile
müssen Sie Umgebungsvariablen festlegen, aber keine Sitzung starten (z. B. einen Fenstermanager).~/.xsession
werden sowohl die Sitzungskonfiguration als auch der Sitzungsstart ausgeführt. So kann die Datei im Wesentlichen sein. ~/.xsession; . ~/.xinitrc
. Einige Distributionen geben Quelle~/.profile
vor~/.xsession
. Moderne Distributionen werden nur dann~/.xsession
als Quelle verwendet, wenn Sie im Display Manager eine benutzerdefinierte Sitzung auswählen. Eine solche Sitzung ist nicht immer verfügbar.Zusammenfassend
~/.profile
ist der richtige Ort für Umgebungsvariablen. Wenn es nicht gelesen wird, versuchen Sie es auszulesen~/.xsession
(und starten Sie Ihre X-Programme von dort aus), oder suchen Sie nach einer systemspezifischen Methode (die von Ihrer Distribution, dem Display Manager (falls vorhanden), dem Sitzungstyp (falls vorhanden) und der Desktop-Umgebung oder abhängig sein kann Session Manager).quelle
.xsession
war die Datei, nach der ich gesucht habe..profile
Quellen.bashrc
oder ähnliches, dann können Sie sicher Set Umgebungsvariablen in.bashrc
nicht nur anmelden Sitzungen, sondern auch für neue Schalen , die anderen Einstellungen benötigen, zB wenn Sie einen Startxterm
ausgnome-terminal
und verschiedene wollendircolors
..bashrc
, werden Ihre vorherigen Einstellungen überschrieben. Wenn Sie beispielsweise eine Screen- oder Tmux-Instanz mit bestimmten Umgebungsvariablen gestartet haben,.bashrc
werden diese Einstellungen durch alle Einstellungen außer Kraft gesetzt.LS_COLORS
Dies ist ein Sonderfall, da es sich tatsächlich um eine Einstellung pro Terminal handelt. Im Idealfall sollte es vom Terminal-Emulator festgelegt werden, und das Festlegen in einer Shell-RC-Datei ist eine Umgehungslösung.In der Gentoo Dokumentation gibt es den Artikel Gentoo Linux Localization Guide . In Kapitel 3 wird das Gebietsschema festgelegt.
In meinem Gentoo
LANG
ist diese Datei eingestellt und alles funktioniert einwandfrei ...quelle
.bashrc
Ordnung ist. In der Anleitung wird jedoch auch empfohlen, eine falsche Umgebungsvariable festzulegen (siehe meine Antwort und insbesondere superuser.com/questions/217431 ).env.d
sind universeller.