以编程方式启动交互式shell

时间:2015-03-02 16:02:32

标签: linux shell

我需要以编程方式执行交互式shell(在Node.js中,但任何语言都可以)。 最重要的是我想要启动任何语言的REPL(节点,ruby,erlang等)并能够自动完成

pri\t

我希望在stderr中获取输出(例如)

print()        println()         printf()

因为它的语言不能使用REPL compgen 我尝试了很多方法,但它似乎失败了,因为shell在以编程方式打开时无法进行交互。 启动/bin/sh -i只会出现如下错误:

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

我听说在没有终端的情况下我无法启动交互式shell,但在执行SSH自动完成功能时,这意味着它可以通过某种方式进行模拟。

我很感激你的帮助。我无法在没有找到解决方案的情况下继续工作。

1 个答案:

答案 0 :(得分:7)

您可以使用 pseudoterminal 模拟终端。这是ssh如何做到的。虽然使用 pseudoterminal 有很多,但SO答案框并不足以满足所有这些要求。因此,请查看pty(7)的手册页。