在emacs*eshell*中等效"exec"?

Der*_*urn 5 emacs elisp eshell

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

(defn eshell/myfunc ()
  (shell-command "mycommand"))
Run Code Online (Sandbox Code Playgroud)

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

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

hua*_*uan 2

尝试

(start-process-shell-command "foo" (current-buffer) "mycommand")
Run Code Online (Sandbox Code Playgroud)

如果您需要更多控制,请参阅Emacs Lisp 参考手册,第 37.4 节创建异步进程