我已经设置了
$ echo $EDITOR
emacs -nw
我想知道为什么在这里找不到它,我该如何解决这个问题?谢谢。
$ sdiff -o sdiff.out f1 f2
1 2 3 | 2 3 4
%e1
sdiff: subsidiary program 'emacs -nw' not found
我不知道为什么其中的一个选项$EDITOR
会出现问题,以及sdiff
源代码中哪里需要它?我想就在这里http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n459
prog = getenv ("EDITOR");
if (prog)
editor_program = prog;
和这里http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1035
execvp (editor_program, (char **) argv);
或者http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1018和http://git.savannah.gnu.org/cgit/diffutils.git/tree/src/sdiff.c#n1024。我不确定该程序在做什么。
作为比较,以下内容工作得很好:
$ eval "$EDITOR"
答案1
很明显,sdiff
试图执行一个名为 的程序emacs -nw
,但该程序并不存在。您的意图是使用一个选项sdiff
进行调用,后跟文件。emacs
-nw
该行为通过查看来确认sdiff 源代码,其中sdiff
将首选编辑器直接填充到 argv[0] 中,它将<space><dash>nw
与emacs
.您还可以通过设置并观察它是否打开 emacs 来确认它sdiff
是否正常工作。EDITOR=emacs
如果您在打开 emacs 时需要该选项,那么我的建议是创建一个包装脚本:
$ cat emacs.sh
#!/bin/sh
vi "$@"
当然,只是开玩笑。你会使用:
$ cat emacs.sh
#!/bin/sh
emacs -nw "$@"
...然后设置EDITOR=/path/to/that/emacs.sh