从 WSL 到 Ubuntu 服务器通过 SSH 进行的奇怪终端行为

从 WSL 到 Ubuntu 服务器通过 SSH 进行的奇怪终端行为

每当我从 Windows 机器连接到 Ubuntu 服务器时,在安装在 Windows Subsystem for Linux 中的 Ubuntu 内部,终端的行为都非常奇怪。

这听起来可能很疯狂,但每当尝试编辑包含破折号 (-) 或 (+) 或类似特殊字符的行时,终端似乎就会变得混乱,并且无法正确插入新文本。

我来给你展示:

在此处输入图片描述

我不知道该怎么办,但是这确实让我发疯。

更多细节。

本地计算机

$echo "$PS1"
\[\033]0;:/home/said\007\]\n\[\033[32m\]\u@\h \[\033[35m\] \[\033[33m\]\w\[\033[36m\]\[\033[0m\]\n$

$locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

远程计算机

: echo "$PS1"
\[\033[38;5;2m\]\h\[\]\[\033[38;5;29m\] \[\]\[\033[38;5;11m\]\w\[\]\[\033[38;5;15m\]\n: \[\]

: locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

当我进入 WSL(Ubuntu 16.04)-> SSH ->(Ubuntu 16.04)(尝试了两个不同的 Ubuntu 主机)时会发生这种情况,但当我例如从我的 Mac 通过 SSH 进入同一台服务器时不会发生这种情况。

答案1

TERM=xterm-color这与在远程主机上使用有关。将其更改为可TERM=xterm-256color缓解此问题。

已报告并调查Microsoft/console GitHub 问题 #139

相关内容