转义键、箭头键等在远程 shell 到服务器上不起作用,但在服务器的本地 shell 上工作

Inf*_*5ek 5 bash keyboard remote

请注意,我在 VMWare Player 上运行这些系统。

引用此箭头键,tab-complete 不起作用,看来我应该检查以确保我的远程 shell 正在运行 bash。我的会话是 bash 根据

echo $0
bash
Run Code Online (Sandbox Code Playgroud)

然而我的方向键和转义键仍然分别打印以下内容

^[[D^[[A^[[B^[[C^[

为什么键映射如此不稳定?

注意:服务器上的 Bash 和 SSH 版本有点旧(见评论)。客户端是最新的。

更新:我登录了实际的机器,转义键等正在工作。只是当我与远程 shell 连接时,它们无法工作。

Ser*_*nyy 3

从您之前的问题 我们知道您正在使用较旧的 Ubuntu 系统和 bash 3.2 版本。

有些 shell 不支持 readline 库(请参阅我的相关问题),这就是导致控制字符显示在屏幕上的原因。Korn shell 和 Dash 就是一个很好的例子。我找不到是否bash 3.2带有 readline 库支持。我会四处打听以确定。

但是,根据locate readline.so您在评论中提供的输出,看来您的 bash 确实缺少该库。下面是我的系统在 bash 4.3 上的相同命令的输出。

$ locate readline.so                                                           
/lib/x86_64-linux-gnu/libreadline.so.5
/lib/x86_64-linux-gnu/libreadline.so.5.2
/lib/x86_64-linux-gnu/libreadline.so.6
/lib/x86_64-linux-gnu/libreadline.so.6.3
Run Code Online (Sandbox Code Playgroud)

您可以尝试运行set enable-keypad on,但我怀疑如果没有 readline 库,这会产生任何影响。

显而易见的解决方案是升级 bash,但由于您需要这个系统来进行信息安全研究,我假设您可能希望保持原样。


我在 unix.stackexchange.com 上提出了相关问题。您可以检查是否bash使用readlinecommand ,如托马斯的回答nm所示