Я хочу написать функцию eshell, которая обертывает существующий сценарий командной строки. Чтобы сделать это, я хочу иметь возможность выполнить команду оболочки из функции eshell. Моим первым инстинктом было сделать что-то вроде
(defn eshell/myfunc ()
(shell-command "mycommand"))
И этот вид работает, за исключением нескольких проблем. Он работает в подчиненной оболочке, а не ведет себя как настоящая команда "exec". Это означает, что, помимо прочего, команда «myfunc» в eshell блокируется во время выполнения команды. Выходные данные «mycommand» собираются и появляются в конце буфера «Shell Output», но они не повторяют поведение обычной функции оболочки, когда во время работы появляется стандартный вывод.
Итак, как правильно это сделать?