2012-03-16 13 views
5

Mevcut bir komut satırı komut dosyasını sıralamak için kullanılan bir eshell işlevi yazmak istiyorum. Bunu yapmak için, bir eshell işlevinden bir kabuk komutu yürütmek istiyorum. Benim ilk içgüdüsü birkaç yaşanan sorunlar dışındaEmacs * eshell * 'de "exec" eşdeğeri *?

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

gibi bir şey Ve eser bu sıralama yapmak oldu. Gerçek bir "exec" komutu gibi davranmak yerine aşağı bir kabukta çalışır. Bu, diğer şeylerin yanı sıra, komut çalışırken "esfunk" komutunun komut satırında engellendiği anlamına gelir. "Mycommand" çıktısı, sonunda Kabuk Çıktı tamponunda bir görüntü olarak toplanır, ancak standart çıkışın çalıştığı yerde göründüğü normal kabuk işlevinin davranışını çoğaltmaz.

Peki, bunu yapmanın doğru yolu nedir? Eğer Emacs Lisp Referece Manual, Sectioin 37.4 Creating an Asynchronous Process bkz fazla kontrole ihtiyaç

cevap

2

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

deneyin.