我通过 SSH 连接到网关计算机,然后从那里通过 SSH 连接到另一台计算机。每次我单击退格键时,整行都会被删除...
使用stty -a
给我以下内容(部分摘录):
如您所见,退格键(“^?”)已绑定到erase
,因此我期望使用它仅删除一个字符。但出于某种原因,它的行为类似于 ^U,整行都被删除...如下所示,只要我按下退格键,就会发送“^?”字符,尽管它被映射到erase
不kill
...,但整行都会被删除。
已经发布了许多类似的问题,但这些解决方案都不起作用,因为 stty 已经映射到erase
。 (IE这)
我正在使用 bash。
答案1
线索就在 中intr = ^?
。当您点击 时Backspace,shell 会SIGINT
从终端接收并清除命令行。我可以通过运行 轻松复制该问题stty intr ^?
。
通常是intr = ^C
,这意味着Ctrl+c触发SIGINT
。运行以下命令:
stty intr ^C
笔记:
- 在上面的命令中你可以
^C
直接输入两个字符:^
和C
;stty
应该可以理解。 - 要修复 ,Backspace只需将其设置
intr
为 以外的任何值即可^?
。例如,您可以通过调用 将其设置为无(未定义)stty intr ''
。仍然^C
应该是您的首选。