Pertanyaan ini telah diajukan di superuser apakah ada cara untuk memuat ulang variabel lingkungan di emacs , tetapi tidak ada solusi yang baik diberikan.
Saya menggunakan EmacsClient dengan sering lebih dari 30 buffer terbuka, jika saya mengubah variabel lingkungan di shell, saya harus keluar dari EmacsClient (dan membuka kembali semua buffer) atau saya harus secara manual mengatur variabel lingkungan juga di Emacs. Saya merasa menjengkelkan bahwa saya tidak dapat memperbarui variabel lingkungan dengan mudah di Emacs. Ada saran?
emacsclient
environment
Håkon Hægland
sumber
sumber
Jawaban:
exec-path-from-shell menyediakan
exec-path-from-shell-copy-env
perintah, yang memungkinkan Anda menyalin nilai variabel lingkungan ke sesi Emacs. Misalnya,M-x exec-path-from-shell-copy-env RET FOO
atur nilai$FOO
dalam Emacs juga.Perhatikan bahwa
exec-path-from-shell-copy-env
memunculkan shell baru untuk mengekstrak nilai variabel lingkungan. Karenanya itu hanya akan berfungsi untuk variabel yang Anda atur di file konfigurasi shell Anda (mis..bashrc
), Tetapi tidak untuk variabel yang hanya diatur dalam sesi shell yang berjalan dengannyaexport
. Mengekstrak variabel-variabel ini umumnya tidak mungkin tanpa peretasan berbelit-belit yang memeriksa/proc/
atau API serupa untuk menjalankan proses.sumber
Sebagai solusinya, berikut ini dapat digunakan (Linux, Bash):
printenv -0 > env.txt
dari jendela terminal Bash,Memperbarui
Saya ternyata ini bisa dilakukan dengan lebih elegan menggunakan
--eval
opsiemacsclient
perintah: Tentukan skrip Bashupdate_emacs_env
:di mana
server_name
nama server Emacs Anda, danmy-update-env
merupakan fungsi yang ditentukan oleh~/.emacs
file Anda :Sekarang Anda cukup mengetik
update_emacs_env
dari baris perintah shell untuk memperbarui variabel lingkungan Emacs ..sumber
source
.bashrc, .bash_profile, dll?export VAR=value
Saya menggunakan ini:
Memungkinkan Anda mengekspor variabel bernama, EG:
sumber