Quando eu não inicio a partir de um terminal, o Emacs 24.5.1 (compilado da fonte) não pega minhas variáveis de ambiente. Em particular, para "importar" as variáveis de ambiente do shell, eu tenho no meu .emacs
(setq exec-path-from-shell-variables
(quote ("PATH" "MANPATH" "INFOPATH" "C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
"LIBRARY_PATH" "LD_LIBRARY_PATH" "SSH_AUTH_SOCK")))
(exec-path-from-shell-initialize)
e para fornecer minha chave privada desbloqueada para ssh
usando o " ssh-agent
" do Keyring do GNOME (também conhecido como gnome-keyring-daemon
) que tenho em meu .bashrc
(meu shell de usuário é bash
)
if [ -n "$DESKTOP_SESSION" ];then
eval $(gnome-keyring-daemon --start --components=ssh)
export SSH_AUTH_SOCK
fi
Mas ao fazer qualquer tarefa relacionada ao controle remoto (por exemplo, push
ou pull
) no Magit, recebo o erro
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
no buffer *magit-process*
, o que significa que o Emacs não vê minha chave privada destravada e, portanto, que o Emacs não está usando o soquete fornecido por SSH_AUTH_SOCK
, porque os mesmos comandos git
relacionados ao remoto são executados sem quaisquer problemas em um terminal.
Eu fiz o check-in eshell
e SSH_AUTH_SOCK
tem o mesmo valor no Emacs que em um terminal externo com bash
. Além disso, quando eu inicio o Emacs a partir de um terminal (em X ou TTY), todas as variáveis de ambiente são selecionadas e não há problemas. Eu sei que quando executado em um terminal, o Emacs herda as variáveis de ambiente do shell. Minha pergunta é por que minhas variáveis de ambiente (que aparentemente são "importadas" corretamente para o Emacs em exec-path-from-shell-variables
) usadas pelo Emacs quando eu não as inicio de um terminal? A mesma configuração está trabalhando na minha outra máquina há vários anos com o Emacs 24.3, mas duvido que o culpado seja a versão mais recente do Emacs.
Edit: Meu sistema operacional é o Trisquel 7.0, que é baseado no Ubuntu 14.04 GNU / Linux. Eu costumo usar o LXDE, mas o problema está lá com outros ambientes de desktop também. Fora do terminal, inicio o Emacs pressionando Alt+F2
(Executar) e inserindo emacs
. Em um terminal, inicio o Emacs inserindo emacs
. Minhas variáveis de ambiente estão definidas em ~/.bashrc
. Estou ciente das complexidades de shells de login e não-login (interativas ou não) e verifiquei que meu ~/.bashrc
é executado independentemente de como eu efetuo login (por exemplo, em X para um ambiente de desktop ou gerenciador de janelas, um TTY, ou através de ssh
).