CentOS 6和语言环境错误


16

我刚刚安装了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=

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


您注释掉SendEnv LANG LC_ * arg在Mac OS X 10.7.5上对我有用的解决方案

Answers:


10

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

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

当我将LC_ALL变量设置为en_US.utf8en_US.utf-8sshd到CentOS 6框中时,语言环境的输出与在源框中设置的相同。

注意,我也没有为UTF使用上限。


11
顺便说一句,我注意到这是由于Mac OS X Lion ssh设置引起的。我编辑了/ etc / ssh_config文件,并注释了SendEnv LANG LC_ *。它解决了我的问题。
Cem

@Cem感谢您的提示,确实可以在Mac OS X Lion上修复它。
ZsoltTörök13年

17

通过按照此屏幕快照在“终端设置”>“高级”中禁用“在启动时设置区域设置环境变量”来解决此问题。

在此处输入图片说明

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


1
这对我有用。具体来说,Terminal.app设置了“ LC_CTYPE = UTF-8”,这随后导致了OP报告的错误。或者,unset LC_CTYPEexport LC_CTYPE=en_US.UTF-8在登录后解决问题。
tardate

这对我来说解决了,谢谢
pjvds 2015年

11

简单方法:

 LC_CTYPE="en_US.UTF-8"

/etc/sysconfig/i18n


经过多次尝试,它对我有用。
汤米

2

对我有用的是在CentOS服务器中添加一个符号链接,如下所示:

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

完成该命令后,将执行以下工作:

export LC_CTYPE=UTF-8

如果不这样做,那么最后一个命令将失败,并显示以下错误:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

现在,一个更简单的解决方案是将以下行添加到服务器中的/ etc / bashrc中:

export LC_CTYPE="en_US.utf8"

感谢您的输入!这真的很棒。终于能够删除那条烦人的评论...
cristobal 2014年

2

从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

问题来自2个设置:

  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

我可以通过要求我的dest主机不要从任何ssh连接中获取此变量来解决此问题(通常,或者通过为我的用户创建一个区域设置ssh_config文件)


1

在本地Centos 6.2系统上:这没有帮助:

localedef -i en_US -f UTF-8 en_US.UTF-8

这工作:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

我也在中删除locale-archive/usr/lib/locale。我不知道这是否必要。


1

这是我过去针对区域设置错误的解决方案。

运行以下命令:locale-gen

然后编辑/etc/locale.gen。确保未注释以下内容:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen

1

Iterm2不同。
转到Iterm2 -> Preferences,然后转到Profiles选项卡,然后Terminal从底部选择选项卡。
转到Environment类别,然后取消标记;

自动设置语言环境变量

最后,关闭并开始新的会话。

在此处输入图片说明


0

并确保 LC_ALL="en_US.UTF-8"已将其添加到/ etc / sysconifg / i18n中

示例内容

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 

-3

编辑 /etc/sysconfig/i18n

更改LANG="us"LANG="en_US"

保存并退出,注销并重新登录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.