Ich habe in den letzten Tagen mit es gespielt und es hat (wie rc) die Eigenart / Funktion, dass es sein Startskript ( .esrc
) nur beim Anmelden ausführt. Die übliche Methode zum Ausführen von Code in jeder interaktiven Sitzung besteht darin, diesen Code in die %prompt
Funktion einzufügen.
Natürlich gibt es keine %prompt
Funktion, wenn sie es -l
noch nie ausgeführt wurde.
Die Frage lautet also: Wie stellen Sie die Anmeldeumgebung ein, wenn Sie über gdm oder ähnliches eintreten, das nur .profile (oder .xprofile, .xsession usw.) enthält? Das Beste, was ich mir ausgedacht habe, ist:
if [ -f "$HOME/.esrc" ]; then
eval "`es -l <<-x
sh <<<'export -p'
x`"
fi
Welches scheint ... schrecklich. Irgendwelche besseren Ansätze?
shell
environment-variables
profile
gdm
james.haggerty
quelle
quelle
es
ist nicht Ihre Login-Shell. Was ist Einstellungalias es='es -l'
in.bashrc
?es
ist meine Login-Shell. Entschuldigung, wenn ich das nicht klargestellt habe. Aber Login-Shells werden nicht in X-Sitzungen ausgeführt, bevor Terminals gestartet werden, zumindest soweit ich weiß.bash
nichtes
. Wenn ich jedoch ein neues Terminalfenster öffne, wird esbash
als Anmeldeshell ausgeführt.Antworten:
Da niemand eine echte Antwort hat, ist hier mein schrecklicher Hack. Einige Shells (z. B. * rxvt) verfügen über Einstellungen, mit denen eine Anmeldeshell erzwungen werden kann. So können Sie in Ihrem
.Xdefaults
etwas Ähnliches hinzufügenDies bedeutet, dass alle von
urxvt256c-ml
Ihnen gestarteten Terminals standardmäßig über eine Anmeldeshell verfügen.Hilft das überhaupt?
quelle