在Windows 10中,当我在Windows中通过Kitematic中的容器启动MS PowerShell进行ssh时,我注意到我无法退格或删除,而是使用^ H代替退格而不是实际删除前一个字符。 / p>
我错过了什么吗?
答案 0 :(得分:11)
接受的答案有效,但我想我会指出,如果你启动bash而不是留在sh中,那么一切正常,只需在#提示符下键入bash,你就会得到你需要的功能。
答案 1 :(得分:8)
当通过ssh连接时,临时解决方案将tty erase
命令设置为终端密钥在终端中发送的任何内容。
stty erase ^H
上面的^H
序列不是文字文本,而是通过按 ctrl - v 然后退格输入的控制字符。
您可以将此命令添加到docker VM上的.bashrc
文件中,以便每次连接时自动设置该命令。在终端中编辑文件时,您必须输入与上述相同的转义序列的字符串。
在.bashrc
中执行此操作会将所有登录的erase
设置为VM,这样您可能会对连接的其他终端类型的擦除方式产生负面影响。
您通常会在客户端而不是服务器上修复此问题。 For example, PuTTY has a specific setting for this。我不确定为什么你的powershell / ssh组合没有正确擦除映射,因为Docker通常是开箱即用的。检查启动docker / ssh终端时Docker快捷方式的功能,并在启动终端进行手动连接时执行相同的操作。
答案 2 :(得分:1)
万一有人在后期阶段偶然发现了类似情况-使用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
在输入行上-每个退格键都附加到该行的后面,并在框中带有一个小问号。