CentOS 6 和语言环境错误

CentOS 6 和语言环境错误

我刚刚安装了 CentOS 6,每当我通过 SSH 远程登录系统时,都会出现以下错误:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

当我在命令行中输入“locale”时,我得到以下输出:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=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=

这可能是什么问题?我该如何解决这个问题?

答案1

在您使用 ssh 的服务器上,您是否通过环境变量设置了语言环境?查看我的 CentOS 6 安装时,我发现唯一受支持的语言环境是en_US.utf8(使用命令发现locale -a)。这可能是问题所在吗?

在我的测试中,当我将LC_ALL环境变量设置为时en_US.UTF-8,通过 ssh 连接到服务器,我的 locale 命令的输出设置为。这与我在 ssh 之前 POSIX未设置(即取消设置)变量时的情况相同。LC_ALL

当我将LC_ALL变量设置为en_US.utf8en_US.utf-8,并通过 ssh 连接到我的 CentOS 6 框时,语言环境的输出与源框上设置的相同。

请注意,我也没有对 UTF 使用大写字母。

答案2

按照此屏幕截图所示,在终端设置>高级中禁用“在启动时设置区域环境变量”即可解决此问题。

在此处输入图片描述

注意:如果您使用 iTerm2,您可以在“首选项”>“配置文件”>“终端”中禁用“自动设置区域变量”选项

答案3

简单方法:

添加

 LC_CTYPE="en_US.UTF-8"

/etc/sysconfig/i18n

答案4

当我从 Solaris X 登录到 Centos 主机时,我收到了此特定消息。

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

问题来自两个设置:

  1. 在我的默认系统 ssh_config 中,我要求系统传递这些变量。

发送与语言环境相关的环境变量 SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. 在我的源主机上,这些设置如下:

    源# LANG= LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=fr_FR.UTF-8 LC_TIME=fr_FR.UTF-8 LC_COLLATE=fr_FR.UTF-8 LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr.UTF-8 LC_ALL=

但是,正如您所看到的,LC_MESSAGES 设置为 fr.UTF-8,这不是我的目标主机上的选项。

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

该问题已在源主机上强制解决,在 .bash_profile 上:# export LC_ALL=fr_FR.UTF-8 export LANG=fr_FR.UTF-8

我可以通过要求我的目标主机不要从任何 ssh 连接中获取此变量来解决这个问题(通常,或者通过为我的用户创建一个语言环境 ssh_config 文件)

相关内容