![在 bash shell 中看到奇怪的问号](https://linux22.com/image/97721/%E5%9C%A8%20bash%20shell%20%E4%B8%AD%E7%9C%8B%E5%88%B0%E5%A5%87%E6%80%AA%E7%9A%84%E9%97%AE%E5%8F%B7.png)
我注意到我们的 RHEL7 服务器有一些奇怪的地方:在 shell 中总是返回问号,其中包含部分文本。有点像这样:
rm file.txt
rm: remove regular file ?file.txt??
或这个:
rm 886- rm: cannot remove ?886-?: No such file or directory
这是正常的吗?
我从 Ubuntu 16.04 桌面通过 ssh 连接到 RHEL7 服务器并使用 screen。这可能是差异的根源吗?
答案1
rm
正在尝试显示您的终端不支持的字符。这表明你的语言环境设置错误,特别是LC_CTYPE
。环境LC_CTYPE
变量应由终端仿真器设置,并且不应由任何脚本(例如.profile
或 )更改.bashrc
。
您表明您正在运行屏幕。如果您在一种语言环境中启动 screen 会话并在另一种语言环境中附加到它,则 screen 会将不支持的字符转换为?
.它无法更改已运行的应用程序(例如您在该窗口中运行的 shell)中的区域设置 - 大多数应用程序不支持动态更改区域设置。你能通过设置变量在 shell 中完成此操作LC_CTYPE
。要查看您的终端期望什么,请打印LC_CTYPE
附加到屏幕会话之前的值。
为了避免麻烦,请在所有地方采用一致的区域设置。如今,UTF-8 是所有地方的标准,任何其他编码都应仅用于与较旧的应用程序或设备兼容。