在 bash shell 中看到奇怪的问号

在 bash shell 中看到奇怪的问号

我注意到我们的 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 是所有地方的标准,任何其他编码都应仅用于与较旧的应用程序或设备兼容。

相关内容