Como faço para o tramp + eshell usar meu ambiente personalizado no controle remoto ~ / .bash_profile

9

Eu configurei o $ PATH personalizado no meu ~ / .bash_profile em uma máquina remota (para programas instalados localmente pelo usuário por nixe cabal).

Eu uso eshell e tramp para emitir comandos na máquina remota ( cd /remotehost:somedir; depois comandos). (Escolhi esse método em vez das sessões SSH comuns em um terminal, principalmente porque estou usando uma conexão ruim e as sessões SSH são interrompidas com muita frequência, por isso não posso contar com a possibilidade de efetuar login, fazer o cd e emitir um antes da interrupção da conexão.)

Infelizmente, meu PATH personalizado não é respeitado nessa situação e alguns dos programas não são encontrados.

Qual seria a melhor maneira de resolver esse problema?

imz - Ivan Zakharyaschev
fonte

Respostas:

6

Esta pergunta já foi respondida por rekado (obrigado!) (Como resposta a outra pergunta mais geral sobre eshell):

Você pode configurar o TRAMP para respeitar a variável PATH na máquina remota (para sessões de eshell remotas) adicionando 'tramp-own-remote-pathà lista 'tramp-remote-path:

(add-to-list 'tramp-remote-path 'tramp-own-remote-path)

Por padrão, o eshell não adotará as configurações PATH remotas.

Quanto a outras variáveis ​​de ambiente, não existe uma abordagem especial PATH: é possível defini-las tramp-remote-process-environment(conforme documentado em https://www.gnu.org/software/emacs/manual/html_node/tramp/Remote-processes.html ):

(add-to-list 'tramp-remote-process-environment
              (format "DISPLAY=%s" (getenv "DISPLAY")))

e não sei como ler os que estão no controle remoto ~/.bash_profile. Portanto, você precisa repeti-las nessa variável no lado local no Emacs como uma solução alternativa, o que não é totalmente conveniente, pois diferentes hosts remotos podem precisar de valores diferentes.

Quanto EDITORespecificamente, é claro, fazendo comwith-editor que seja mais conveniente e apropriado.

imz - Ivan Zakharyaschev
fonte
2
Não vejo que isso funcione. Talvez, seja porque eu configurei e exportei um PATH personalizado ~/.bash_profile(ao contrário de ~/.profile) que vi em alguns documentos sobre esses tramp-*vars ...
imz - Ivan Zakharyaschev
11
Isso foi corrigido no Tramp em dezembro passado. Experimente a versão de desenvolvimento do Tramp.
Michael Albinus
11
Pode valer a pena apontar nesta resposta que adicionar 'tramp-own-remote-pathao tramp-remote-pathtramp faz com que o shell de logon seja aberto (usando o -largumento), assim, fornecendo ~/.profile- isso significa que a personalização por host pode ser feita ~/.profilepara outras coisas que não PATH.
Noel