相当于 emacs *eshell* 中的 "exec"?



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

(defn eshell/myfunc ()
  (shell-command "mycommand"))

这种类型的是有效的,除了一些问题。它在一个低劣的shell中运行,而不是像真正的"exec"命令那样运行。这意味着,除其他外,eshell中的命令"myfunc"在命令运行时会出现阻塞。"mycommand"的输出被收集并在末尾显示在Shell输出缓冲区中,但它不会复制正常Shell函数的行为,在正常Shell函数中,标准输出在运行时显示。

那么,正确的方法是什么呢?

尝试

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

如果您需要更多的控制,请参阅Emacs Lisp Referece Manual,第37.4节创建异步进程。

相关内容

  • 没有找到相关文章