Diese Frage wurde bei Superuser gestellt. Es gibt eine Möglichkeit, Umgebungsvariablen in Emacs neu zu laden , aber es wurde keine gute Lösung angegeben.
Ich verwende EmacsClient mit häufig mehr als 30 geöffneten Puffern. Wenn ich eine Umgebungsvariable in der Shell ändere, muss ich EmacsClient beenden (und alle Puffer erneut öffnen) oder die Umgebungsvariable auch in Emacs manuell festlegen. Ich finde es ärgerlich, dass ich die Umgebungsvariablen in Emacs nicht einfach aktualisieren kann. Irgendwelche Vorschläge?
emacsclient
environment
Håkon Hægland
quelle
quelle
Antworten:
exec-path-from-shell stellt den
exec-path-from-shell-copy-env
Befehl bereit , mit dem Sie den Wert von Umgebungsvariablen in Emacs-Sitzungen kopieren können. Legt beispielsweiseM-x exec-path-from-shell-copy-env RET FOO
den Wert von auch$FOO
in Emacs fest.Beachten Sie, dass
exec-path-from-shell-copy-env
eine neue Shell erzeugt wird, um den Wert der Umgebungsvariablen zu extrahieren. Daher funktioniert es nur für Variablen, die Sie in Ihren Shell-Konfigurationsdateien festgelegt haben (z. B..bashrc
), nicht jedoch für Variablen, die nur in einer laufenden Shell-Sitzung mit festgelegt wurdenexport
. Das Extrahieren dieser Variablen ist im Allgemeinen nicht ohne komplizierte Hacks möglich, die eine/proc/
API oder eine ähnliche API zum Ausführen von Prozessen untersuchen.quelle
Als Problemumgehung kann Folgendes verwendet werden (Linux, Bash):
printenv -0 > env.txt
das Bash-Terminalfenster aus.Aktualisieren
Es stellt sich heraus, dass dies mit der
--eval
Option desemacsclient
Befehls eleganter erfolgen kann : Definieren eines Bash-Skriptsupdate_emacs_env
:Wo
server_name
ist Ihr Emacs-Servername undmy-update-env
eine von Ihrer~/.emacs
Datei definierte Funktion :Jetzt können Sie einfach
update_emacs_env
über die Shell-Befehlszeile eingeben, um die Emacs-Umgebungsvariablen zu aktualisieren.quelle
source
das .bashrc, .bash_profile usw.?export VAR=value
Ich habe das benutzt:
Ermöglicht das Exportieren einer benannten Variablen, EG:
quelle