Mas*_*Jon 2 linux keyboard ssh shell qnap
我有两个可以使用 SSH 连接的 QNAP:
\n在 TS-851 上,登录后,如果我在键盘上输入“\xc3\xa9”,屏幕上会显示“\xc3\xa9”。另一方面,TS-412 不会在屏幕上打印字符。因此,我无法访问任何包含重音字符的内容(仍然通过 SSH)。
\n我进行了搜索,发现的都是有关 SMB 问题,但这不是我的情况。共享文件夹正确显示。通过 SSH 列出文件夹会显示所有重音字符。但是,键入并粘贴并不会进入该框。甚至路径的自动完成也会去除重音字符。
\n两者的区域设置相同。一切看起来都一样,但显然有些东西不一样。
\n我知道 QNAP 有自己的 Linux 风格,我已经在他们的论坛中询问过,但以防万一这里有人知道。因为,我认为这个问题看起来更像是一个通用的 Linux 问题(并不是说一切都结束了,但它不是 QNAP 特有的)。
\n这实在是太烦人了!
\n在我的电脑上执行locale:
LANG=C.UTF-8\nLANGUAGE=\nLC_CTYPE="C.UTF-8"\nLC_NUMERIC="C.UTF-8"\nLC_TIME="C.UTF-8"\nLC_COLLATE="C.UTF-8"\nLC_MONETARY="C.UTF-8"\nLC_MESSAGES="C.UTF-8"\nLC_PAPER="C.UTF-8"\nLC_NAME="C.UTF-8"\nLC_ADDRESS="C.UTF-8"\nLC_TELEPHONE="C.UTF-8"\nLC_MEASUREMENT="C.UTF-8"\nLC_IDENTIFICATION="C.UTF-8"\nLC_ALL=\nRun Code Online (Sandbox Code Playgroud)\nlocale在 TS-412 上执行:
LANG=en_US.UTF-8\nLC_CTYPE="en_US.UTF-8"\nLC_NUMERIC="en_US.UTF-8"\nLC_TIME="en_US.UTF-8"\nLC_COLLATE="en_US.UTF-8"\nLC_MONETARY="en_US.UTF-8"\nLC_MESSAGES="en_US.UTF-8"\nLC_PAPER="en_US.UTF-8"\nLC_NAME="en_US.UTF-8"\nLC_ADDRESS="en_US.UTF-8"\nLC_TELEPHONE="en_US.UTF-8"\nLC_MEASUREMENT="en_US.UTF-8"\nLC_IDENTIFICATION="en_US.UTF-8"\nLC_ALL=en_US.UTF-8\nRun Code Online (Sandbox Code Playgroud)\nlocale在 TS-851 上执行:
LANG=en_US.UTF-8\nLC_CTYPE="en_US.UTF-8"\nLC_NUMERIC="en_US.UTF-8"\nLC_TIME="en_US.UTF-8"\nLC_COLLATE="en_US.UTF-8"\nLC_MONETARY="en_US.UTF-8"\nLC_MESSAGES="en_US.UTF-8"\nLC_PAPER="en_US.UTF-8"\nLC_NAME="en_US.UTF-8"\nLC_ADDRESS="en_US.UTF-8"\nLC_TELEPHONE="en_US.UTF-8"\nLC_MEASUREMENT="en_US.UTF-8"\nLC_IDENTIFICATION="en_US.UTF-8"\nLC_ALL=en_US.UTF-8\nRun Code Online (Sandbox Code Playgroud)\n所有机器上的输出echo $TERM $SHELL相同:
xterm-256color /bin/bash\nRun Code Online (Sandbox Code Playgroud)\n在我的计算机上的输出uname -a,TS-412,TS-851(按顺序):
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\n\nLinux QNAP_TS_412_NAME 3.4.6 #1 Thu Nov 24 07:58:16 CST 2022 armv5tel unknown\n\nLinux QNAP_TS_851_NAME 5.10.60-qnap #1 SMP Thu Jan 12 01:41:46 CST 2023 x86_64 GNU/Linux\nRun Code Online (Sandbox Code Playgroud)\n所有设备均已更新到最新版本,但 TS-412 和 TS-851 不是同一版本,因为 TS-421 太旧,无法更新到版本 5。
\nTS-412版本:4.3.3.2211
\nTS-851版本:5.0.1.2277
\n我可以绕过编写一个脚本来执行我想要执行的包含重音字符的问题,然后运行它。它有效,但是......不实用。
\nlocale -a它在两个 QNAP 上给出相同的结果:
\nC\nen_US.utf8\nPOSIX\nRun Code Online (Sandbox Code Playgroud)\ncat测试键入cat <Enter> <\xc3\xa9>,字符出现。<CTRL+D>,角色再次出现。<CTRL-D>,cat退出。
vi测试当我启动时,vi我可以输入\xc3\xa9并且它会出现。
最后两个测试告诉我,shell 输入行中有一些东西阻止了某些字符。
\n我在@KamilMaciorowski 的帮助下找到了解决方案
\n修改/etc/inputrc为包含set convert-meta off就可以了。
由于 QNAP 的特殊操作系统,此修改无法在重新启动后保存,但按照https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup并制作相应的脚本来修改文件,它就可以工作了!
\n虽然有一个问题,但小到暂时可以忍受:
\n输入\xc3\xa9,我必须退格两次才能删除该字符。所以:
[user@QNAP_NAME ~]$ echo "AB\xc3\xa9"\nAB\xc3\xa9\n[user@QNAP_NAME ~]$ echo "AB" ==> DID one backspace\nAB\xef\xbf\xbd\n[user@QNAP_NAME ~]$ echo "A" ==> No "\xc3\xa9"\nA\n[user@QNAP_NAME ~]$ echo "A" ==> Typed "A", "B", "\xc3\xa9", two backspaces\nAB\nRun Code Online (Sandbox Code Playgroud)\n所以,我们看到的不再反映真实的字符串,但是嘿,不要擦除,就可以了!
\n如果有人找到/知道原因,我会修改我的答案。
\n