【发布时间】:2016-01-02 12:55:12
【问题描述】:
在 Windows 10 中,当我在 Windows 上启动 MS PowerShell 以通过 Kitematic 中的容器进行 ssh 时,我注意到我无法退格或删除,而是得到 ^H 用于退格,而不是实际删除前一个字符。
我错过了什么吗?
【问题讨论】:
标签: powershell docker kitematic
在 Windows 10 中,当我在 Windows 上启动 MS PowerShell 以通过 Kitematic 中的容器进行 ssh 时,我注意到我无法退格或删除,而是得到 ^H 用于退格,而不是实际删除前一个字符。
我错过了什么吗?
【问题讨论】:
标签: powershell docker kitematic
接受的答案有效,但我想我要指出的是,如果您启动 bash 而不是停留在 sh 中,那么一切正常,因此只需在 # 提示符下键入 bash,您就会获得所需的功能。
【讨论】:
临时解决方案是将 tty erase 命令设置为通过 ssh 连接时在终端中发送的退格键。
stty erase ^H
上面的^H 序列不是文字文本,而是通过按ctrl-v 然后按退格 输入的控制字符。
您可以将此命令添加到 docker VM 上的 .bashrc 文件中,以便在每次连接时自动设置它。在终端中编辑文件时,您必须输入与上述相同的转义序列的字符串。
在.bashrc 中执行此操作将为所有 VM 登录设置erase,因此您可能会对其他连接终端类型的擦除工作方式产生负面影响。
您通常会在客户端而不是服务器上解决此问题。 For example, PuTTY has a specific setting for this。我不确定为什么您的 powershell/ssh 组合没有正确映射擦除,因为 Docker 通常开箱即用。检查启动 docker/ssh 终端时 Docker 快捷方式的作用,并在启动终端以手动连接时执行相同操作。
【讨论】:
^H 这样的奇怪输出。请参阅下面的答案。
如果有人在这个后期偶然发现这一点 - 类似的情况 - 使用 MS POWERSHELL openSSH 实现。远程处理到 AIX/ksh。
必须将 TERM 设置为 vt100(已编辑 .profile)以使 vi 以不加重的方式工作:
TERM=vt100
EXPORT TERM
然后将此行添加到我的.profile.
stty erase '^?' echoe
erase '^?' 占用 windows ssh 提供的退格键。
echoe 强制编辑显示在屏幕上。
没有echoe 我会输入
$123456[backspace][backspace][backspace][backspace][enter]
$12 is not recognized as a command
在输入行 - 每个退格都附加到行中,并在框中带有一个小问号。
【讨论】: