Cette question a été posée au superutilisateur is-there-a-way-to-recharge-environment-variables-in-emacs , mais aucune bonne solution n'a été donnée.
J'utilise EmacsClient avec souvent plus de 30 tampons ouverts, si je change une variable d'environnement dans le shell, je dois quitter EmacsClient (et rouvrir tous les tampons) ou je dois définir manuellement la variable d'environnement également dans Emacs. Je trouve ennuyeux de ne pas pouvoir mettre à jour facilement les variables d'environnement dans Emacs. Aucune suggestion?
emacsclient
environment
Håkon Hægland
la source
la source
Réponses:
exec-path-from-shell fournit la
exec-path-from-shell-copy-env
commande, qui vous permet de copier la valeur des variables d'environnement dans les sessions Emacs. Par exemple,M-x exec-path-from-shell-copy-env RET FOO
définit également la valeur de$FOO
dans Emacs.Notez que
exec-path-from-shell-copy-env
génère un nouveau shell pour extraire la valeur de la variable d'environnement. Par conséquent, cela ne fonctionnera que pour les variables que vous définissez dans vos fichiers de configuration shell (par exemple.bashrc
), mais pas pour les variables définies uniquement dans une session shell en cours d'exécution avecexport
. L'extraction de ces variables est généralement impossible sans des piratages alambiqués qui inspectent/proc/
ou une API similaire pour l'exécution des processus.la source
Comme solution de contournement, les éléments suivants peuvent être utilisés (Linux, Bash):
printenv -0 > env.txt
partir de la fenêtre du terminal Bash,Mise à jour
Il s'avère que cela peut être fait de manière plus élégante en utilisant l'
--eval
option de laemacsclient
commande: Définir un script Bashupdate_emacs_env
:où
server_name
est le nom de votre serveur Emacs etmy-update-env
est une fonction définie par votre~/.emacs
fichier:Vous pouvez maintenant simplement taper à
update_emacs_env
partir de la ligne de commande du shell pour mettre à jour les variables d'environnement Emacs.la source
source
le .bashrc, .bash_profile, etc.?export VAR=value
J'avais l'habitude d'utiliser ceci:
Vous permet d'exporter une variable nommée, EG:
la source