2012-03-16 8 views
5

Quiero escribir una función de eshell que envuelve una secuencia de comandos de línea de comandos existente. Para hacer esto, quiero poder ejecutar un comando de shell desde una función de eshell. Mi primer impulso fue hacer algo como¿Equivalente de "exec" en emacs * eshell *?

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

Y este tipo de obras, a excepción de algunos problemas. Se ejecuta en una capa inferior en lugar de comportarse como un verdadero comando "ejecutivo". Esto significa que, entre otras cosas, el comando "myfunc" en eshell parece bloquearse mientras se ejecuta el comando. La salida de "mycommand" se recopila y aparece en un búfer de salida de shell al final, pero no replica el comportamiento de una función de shell normal, donde aparece la salida estándar mientras se ejecuta.

Entonces, ¿cuál es la forma correcta de hacerlo?

Respuesta