2012-03-16 11 views
5

Tôi muốn viết một hàm eshell sắp xếp kết thúc tập lệnh dòng lệnh hiện có. Để thực hiện điều này, tôi muốn có thể thực hiện một lệnh shell từ một hàm eshell. bản năng đầu tiên của tôi là phải làm một cái gì đó giống nhưTương đương với "exec" trong emacs * eshell *?

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

loại này công trình, ngoại trừ một vài vấn đề. Nó chạy trong một vỏ kém hơn thay vì hành xử như một lệnh "exec" thực sự. Điều này có nghĩa rằng, trong số những thứ khác, lệnh "myfunc" trong eshell xuất hiện để chặn trong khi lệnh đang chạy. Đầu ra của "mycommand" được thu thập xuất hiện trong một bộ đệm Shell Output ở cuối, nhưng nó không tái tạo hành vi của một hàm shell bình thường, nơi đầu ra tiêu chuẩn xuất hiện trong khi nó chạy.

Vì vậy, cách chính xác để làm điều này là gì?

Trả lời