我想编写一个包含现有命令行脚本的eshell函数。为了做到这一点,我希望能够从eshell函数执行shell命令。我的第一直觉是做
之类的事情(defn eshell/myfunc ()
(shell-command "mycommand"))
除了一些问题之外,这种类有效。它运行在劣质shell中,而不是像真正的“exec”命令。这意味着,除其他外,eshell中的命令“myfunc”似乎在命令运行时阻塞。收集“mycommand”的输出,最后显示在Shell输出缓冲区中,但它不会复制正常shell函数的行为,标准输出在运行时会出现。
那么,这样做的正确方法是什么?
答案 0 :(得分:2)
尝试
(start-process-shell-command "foo" (current-buffer) "mycommand")
如果您需要更多控制权,请参阅Emacs Lisp Referece Manual, Sectioin 37.4 Creating an Asynchronous Process。