EDITOR: programa subsidiário 'emacs -nw' não encontrado [duplicado]

0

Eu configurei

$ echo $EDITOR
emacs -nw

Eu estava me perguntando por que não é encontrado aqui e como posso resolver o problema? Obrigado.

$ sdiff -o sdiff.out f1 f2
1 2 3                                 | 2 3 4
%e1
sdiff: subsidiary program 'emacs -nw' not found

Não sei por que uma opção em $EDITOR é um problema e onde é necessária em sdiff código-fonte? Eu acho que é aqui link

prog = getenv ("EDITOR");
if (prog)
  editor_program = prog;

e aqui link

execvp (editor_program, (char **) argv);

ou link e link . Não tenho certeza do que o programa está fazendo.

Para comparação, o seguinte funciona perfeitamente:

$ eval "$EDITOR"
    
por Tim 18.11.2018 / 14:26

1 resposta

4

É evidente que sdiff tentou executar um programa chamado exatamente emacs -nw , que não existia. Sua intenção era que sdiff chamasse emacs com uma opção -nw seguida do (s) arquivo (s).

O comportamento é confirmado observando o código-fonte do sdiff , onde sdiff preenche o editor preferencial --directamente-- em argv [0], que coloca o <space><dash>nw junto com o emacs . Você também pode confirmar que sdiff está funcionando corretamente definindo EDITOR=emacs e observando que ele abre o emacs.

Se você precisar da opção ao abrir o emacs, minha sugestão seria criar um script de wrapper:

$ cat emacs.sh
#!/bin/sh

vi "$@"

Brincadeira, claro. Você usaria:

$ cat emacs.sh
#!/bin/sh

emacs -nw "$@"

... e, em seguida, defina EDITOR=/path/to/that/emacs.sh

    
por 18.11.2018 / 14:56