我必须要 ubuntu 22.04:
- 一个是 Azure,由 Canonical 镜像创建
- 另一个是从docker hub创建的docker Canonical官方镜像。这是出现问题的部署
我已经在两者中安装了 mc,docker 版本在边框特殊字符上显示不正确的字符。这似乎是代码页/语言设置的不同,但是...
两者有何相同之处(因此改变任何相关内容可能不是解决方案)
- 我创建了两个完全相同的mobaxterm 会话定义(有重复),我没有改变任何其他东西,只是 IP 地址。(所以这与 SSH 客户端设置无关
- 我已将正常工作的 .bashrc 复制到不正常工作的环境中,然后创建了一个新的 SSH 会话。
总的来说,这似乎与 SSH 客户端(及其设置)无关,因为如果我只是得到一个提示docker exec -it <containername> bash
问题就在那里
当然,没有 mc 我也可以活下去,但问题不在于 mc,而且我不希望我的系统中存在隐藏的、难以理解的配置问题。
进一步的诊断,感谢您的评论:
$ printf '\xc2\xab\n' # on both terminals
«
$ locale # on bad bad
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
$ locale # on good
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=
$ locale charmap # on bad
ANSI_X3.4-1968
$ locale charmap # on good
UTF-8
~$ dpkg -l | grep ncurses # on bad
ii libncurses6:amd64 6.3-2ubuntu0.1 amd64 shared libraries for terminal handling
ii libncursesw6:amd64 6.3-2ubuntu0.1 amd64 shared libraries for terminal handling (wide character support)
ii ncurses-base 6.3-2ubuntu0.1 all basic terminal type definitions
ii ncurses-bin 6.3-2ubuntu0.1 amd64 terminal-related programs and man pages
ii ncurses-term 6.3-2ubuntu0.1 all additional terminal type definitions
gabor@vm-wp-01:~$ dpkg -l | grep ncurses # on good
ii libncurses6:amd64 6.3-2ubuntu0.1 amd64 shared libraries for terminal handling
ii libncursesw6:amd64 6.3-2ubuntu0.1 amd64 shared libraries for terminal handling (wide character support)
ii ncurses-base 6.3-2ubuntu0.1 all basic terminal type definitions
ii ncurses-bin 6.3-2ubuntu0.1 amd64 terminal-related programs and man pages