5

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

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

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

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

4

1 回答 1

2

尝试

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

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

于 2012-03-17T05:09:32.877 回答