Como criar um script bash no eshell do emacs

5

Estou tentando usar o eshell dentro do emacs, então não preciso alternar entre o emacs e um terminal. Ao usar o bash, eu tenho poucos scripts bash que eu costumo usar para exportar algumas variáveis env (para alternar entre diferentes versões de ferramentas e ambientes de construção). É possível de alguma forma executar meus scripts com bash, e colocar as exportações (ou algumas delas) em eshell.

Basicamente, estou tentando criar um script bash em eshell.

Existe uma maneira de fazer algo assim?

    
por siddhadev 20.04.2011 / 16:47

2 respostas

4

Eu acho que encontrei um jeito. Eu criei um script my-init.el com este conteúdo:

  bash -c "source my-init.sh > /dev/null && env |                   \
           grep -E 'MY_ENV\=' |                                     \ 
           sed -e 's/\([^=]*\)=\(.*\)/(setenv \"\" \"\" \)/g'"  \
           > /tmp/my-init-env
  source /tmp/my-init-env

Quando originado de dentro do eshell, ele iniciará um bash, originará o my-init.sh lá (configurando assim a variável MY_ENV ) e, em seguida, chamará env para obter MY_ENV e o converterá com sed para algo como (setenv "MY_VAR" "value") , que é originado no eshell original.

Não é bonito, mas faz o trabalho!

    
por 20.04.2011 / 18:06
1

Isto parece ser um equívoco comum por algum motivo, mas "fonte" não significa "definir algumas variáveis"; isso significa (no contexto de sh) "executar os comandos neste arquivo no contexto atual". Portanto, a resposta para a pergunta "posso criar um arquivo bash em um programa que usa alguma outra linguagem incompatível?" é não .

    
por 20.04.2011 / 17:01

Tags