SSH连接QNAP TS-412无法输入重音字符é的问题排查求助
SSH连接QNAP TS-412无法输入重音字符é的问题排查求助
大家好,我遇到一个特别闹心的问题,想请各位帮忙分析排查下:
我有两台可以通过SSH连接的QNAP设备:
- TS-412
- TS-851
登录TS-851后,直接在键盘输入é,屏幕上能正常显示这个字符;但TS-412这边完全不行——输入é根本不会在终端显示,导致我没法访问任何包含重音字符的路径(还是通过SSH操作的情况下),甚至路径自动补全会直接把重音字符给去掉。
补充说明下:SMB共享是正常的,通过SSH列目录也能看到所有带重音字符的文件夹,只是输入/粘贴重音字符的时候,设备接收不到,自动补全还会丢失这些字符。
我查了很多资料,但大多都是SMB相关的问题,和我的情况不符。两台设备的locale看起来完全一致,其他配置也没看出差异,但问题就是实实在在存在,真的很影响使用!
我知道QNAP用的是自己定制的Linux系统,已经在他们论坛提问过,但还没找到解决办法,所以想来这里问问——感觉这个问题更偏向通用Linux层面,说不定有人遇到过类似情况。
已做的排查和测试内容:
1. Locale设置对比
- 本地PC的
locale输出:
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=
- TS-412的
locale输出:
LANG=en_US.UTF-8 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=en_US.UTF-8
- TS-851的
locale输出和TS-412完全一致
2. 终端与Shell配置
所有设备上执行echo $TERM $SHELL的输出都是:
xterm-256color /bin/bash
3. 系统版本信息
- 本地PC:
Linux COMPUTER_NAME 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
- TS-412:
Linux QNAP_TS_412_NAME 3.4.6 #1 Thu Nov 24 07:58:16 CST 2022 armv5tel unknown
(QTS版本:4.3.3.2211,因为设备太老无法升级到QTS 5)
- TS-851:
Linux QNAP_TS_851_NAME 5.10.60-qnap #1 SMP Thu Jan 12 01:41:46 CST 2023 x86_64 GNU/Linux
(QTS版本:5.0.1.2277)
4. 临时替代方案
我可以把需要执行的带重音字符的命令写成脚本,然后运行脚本就能正常执行,但这个方法实在太不实用了。
5. 额外测试结果
- 两台QNAP执行
locale -a的输出一致:
C en_US.utf8 POSIX
- 在TS-412上运行
cat命令:输入回车后敲é,字符能正常显示;按Ctrl+D后,字符会再次输出,再按Ctrl+D退出cat,整个过程字符都正常 - 在TS-412上用
vi编辑文件时,也能正常输入和显示é
从这两个测试来看,问题应该出在Shell的命令行输入处理上——cat和vi都能正常处理重音字符,只有bash的命令行输入会拦截这些字符?
真心希望有人能帮我找到问题根源和解决办法,感谢大家!
备注:内容来源于stack exchange,提问作者Master DJon
相关产品推荐
相关产品推荐

