以编程方式启动交互式Shell

3

我需要以编程方式进行交互式shell(在Node.js中,但任何语言都可以)。 最重要的是,我想启动任何语言的REPL(node、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个回答

7
你可以使用伪终端来模拟终端。这就是ssh的工作原理。但是,使用伪终端需要掌握很多知识,SO的答案框无法容纳所有内容。因此,请查看pty(7)的手册页面了解更多信息。

我可以假设它已经预装在每个Linux系统上吗? - Krzysztof Wende
根据“forkpty”的man页面,它不是标准的,但它存在于libc5和glibc2中,因此可以安全地假设它存在于任何最新的Linux系统中。 - randomusername
是的!终于成功了。谢谢你! 当这个问题可以被悬赏时,我会给你50个声望点。 这是第一个真正起作用的答案。 - Krzysztof Wende

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接