Esta pergunta foi feita no superusuário existe uma maneira de recarregar variáveis de ambiente no emacs , mas nenhuma boa solução foi fornecida.
Estou usando o EmacsClient com frequentemente mais de 30 buffers abertos; se eu alterar uma variável de ambiente no shell, preciso sair do EmacsClient (e reabrir todos os buffers) ou preciso definir manualmente a variável de ambiente também no Emacs. Acho irritante não poder atualizar facilmente as variáveis de ambiente no Emacs. Alguma sugestão?
emacsclient
environment
Håkon Hægland
fonte
fonte
Respostas:
exec-path-from-shell fornece o
exec-path-from-shell-copy-env
comando, que permite copiar o valor das variáveis de ambiente nas sessões do Emacs. Por exemplo,M-x exec-path-from-shell-copy-env RET FOO
define o valor de$FOO
no Emacs também.Observe que
exec-path-from-shell-copy-env
gera um novo shell para extrair o valor da variável de ambiente. Portanto, ele funcionará apenas para variáveis definidas nos arquivos de configuração do shell (por exemplo.bashrc
), mas não para variáveis definidas apenas em uma sessão do shell em execuçãoexport
. Extrair essas variáveis geralmente é impossível sem hacks complicados que inspecionam/proc/
ou API semelhante para processos em execução.fonte
Como solução alternativa, é possível usar o seguinte (Linux, Bash):
printenv -0 > env.txt
partir da janela do terminal Bash,Atualizar
Acontece que isso pode ser feito de maneira mais elegante usando a
--eval
opção doemacsclient
comando: Define a Bash scriptupdate_emacs_env
:Onde
server_name
está o nome do servidor Emacs emy-update-env
é uma função definida pelo seu~/.emacs
arquivo:Agora você pode simplesmente digitar
update_emacs_env
na linha de comando do shell para atualizar as variáveis de ambiente do Emacs.fonte
source
o .bashrc, .bash_profile etc.?export VAR=value
Eu costumava usar isso:
Permite exportar uma variável nomeada, EG:
fonte