2015-03-02 54 views
2

我需要以編程方式執行交互式shell(在Node.js中,但任何語言都可以)。 最重要的是,我要開始任何語言的REPL(節點,紅寶石,二郎等),能夠獲得自動完成以編程方式啓動交互式shell

pri\t 

,我想在stderr輸出(例如)

print()  println()   printf() 

而且因爲它在語言REPL compgen不能使用。
我已經嘗試了很多方法,但它似乎失敗了,因爲shell以編程方式打開時不能交互。 Launchin /bin/sh -i只是yeilds一樣的錯誤:

bash: cannot set terminal process group (XXXX): Inappropriate ioctl for device 

我聽說過,我不能沒有終端開始交互的shell,但這樣做SSH自動完成做這些工作的時候,這意味着它可以以某種方式加以效仿。

我會感謝您的幫助。如果沒有找到解決方案,我無法繼續工作。

回答

6

您可以使用僞終端來模擬終端。這是如何ssh做到這一點。雖然使用僞終端有很多,但SO回答框不夠大。因此請查看手冊頁pty(7)

+0

我可以假設它已預裝在每個Linux系統上? – 2015-03-02 16:14:51

+0

@KrzysztofWende根據'forkpty'的手冊頁,它不是標準的,但它存在於libc5和glibc2中,所以假設它存在於任何最新的linux系統中是安全的。 – randomusername 2015-03-02 16:19:41

+0

是的!最後它起作用。謝謝! 當問題將可用於賞金時,我會給你50個重點。 這是實際工作的第一個答案。 – 2015-03-02 17:04:52