这个问题可能听起来很奇怪,但我会解释一下背景,希望它能证明这一点。我正在Linux上尝试使用一些制作不良的炮弹。
我必须使用fdb
和fcsh
,它们是Adobe的命令行调试器和Flash的编译器shell。这不是特别相关 - 只有它们是shell 这一事实,即你运行fdb
,它会给你一个类似(fdb)
的提示并输入命令。一切都很酷。
BUT。假设你想重新执行你的最后一个命令,所以你点击键盘上的[Arrow-Up],就像你在Bash,Python Shell,GDB shell等中所做的那样。它不起作用。我没有看到提示符处的最后一个命令,而是(fdb) ^[[A
(请注意(fdb)
是提示)。按[箭头左]键返回几个字符并修复您键入的命令 - 相同的故事。
这看起来像Adobe没有很好地制作它的外壳。有没有办法打开一个简单的bash shell(或其他东西),它会继续将我的命令提供给一个开放的fdb
shell,作为一个守护进程保存?我希望通过这种方式,我可以获得Bash用于处理命令的简洁可用性功能,但是可以通过fdb
执行它们。
注意:我发现this wrapper保留fcsh
守护进程并保存它的pid文件。这很酷。我还没有使用它,但考虑到它。不过,我的问题仍然存在:有没有办法将命令从一个shell传递到另一个shell?
答案 0 :(得分:8)
Bash使用GNU readline库,它只能用于开源程序(具有适当的许可证)。但您可以使用rlwrap。它在大多数Linux分发版中。例如,您可以将其用作rlwrap fdb
。