我需要以编程方式执行交互式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自动完成功能时,这意味着它可以通过某种方式进行模拟。
我很感激你的帮助。我无法在没有找到解决方案的情况下继续工作。
答案 0 :(得分:7)
您可以使用 pseudoterminal 模拟终端。这是ssh如何做到的。虽然使用 pseudoterminal 有很多,但SO答案框并不足以满足所有这些要求。因此,请查看pty(7)的手册页。