相当于" exec"在emacs * eshell *?

时间:2012-03-16 17:59:58

标签: emacs elisp eshell

我想编写一个包含现有命令行脚本的eshell函数。为了做到这一点,我希望能够从eshell函数执行shell命令。我的第一直觉是做

之类的事情
(defn eshell/myfunc ()
  (shell-command "mycommand"))

除了一些问题之外,这种有效。它运行在劣质shell中,而不是像真正的“exec”命令。这意味着,除其他外,eshell中的命令“myfunc”似乎在命令运行时阻塞。收集“mycommand”的输出,最后显示在Shell输出缓冲区中,但它不会复制正常shell函数的行为,标准输出在运行时会出现。

那么,这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

尝试

(start-process-shell-command "foo" (current-buffer) "mycommand")

如果您需要更多控制权,请参阅Emacs Lisp Referece Manual, Sectioin 37.4 Creating an Asynchronous Process