【问题标题】:I got warning setlocale LC_CTYPE when I ssh connect to vagrant centos 6当我 ssh 连接到 vagrant centos 6 时,我收到警告 setlocale LC_CTYPE
【发布时间】:2016-06-07 21:23:59
【问题描述】:

我是 vagrant 的初学者。我尝试使用 vagrant 在我的计算机上创建一个虚拟机(cent os 6)。当我运行 vagrant ssh 时,它会打印以下警告:

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

当我运行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=

我搜索了一个小时,但仍然无法解决。

【问题讨论】:

标签: linux centos vagrant centos6


【解决方案1】:

对于那些在 MacOS 中遇到此错误的人: 打开 /etc/ssh/ssh_config 文件(在您喜欢的任何编辑器中,我在示例中使用了 vi 编辑器)

sudo vi /etc/ssh/ssh_config
(enter sudo password)

在这个文件中,注释掉下面的行:

SendEnv LANG LC_*

(使用#表示评论:#SendEnv LANG LC_*

关闭文件。关闭并重新打开终端并再次尝试 ssh 命令。

要详细了解该问题,您可以查看此技术博客: https://www.cyberciti.biz/faq/os-x-terminal-bash-warning-setlocale-lc_ctype-cannot-change-locale/

【讨论】:

    【解决方案2】:

    这可能是由您的终端设置引起的。

    对于 iTerm2,取消选中此设置:

    Profiles -> Terminal -> "Set locale variables automatically".

    上下文:如果您在无法修改区域设置的共享节点上工作,警告可能是由于您的终端尝试(但失败)更改区域设置。

    【讨论】:

      【解决方案3】:

      您可以将LC_ALL 设置为C,例如

      export LC_ALL=C
      

      或连接到您的虚拟机之前的前缀:

      LC_ALL=C ssh vagrant@localhost
      

      注意:您也可以考虑为您的 SSH 配置 (man ssh_config) 设置 SetEnv,如下所述。


      要使其永久化,您可以在 ~/.ssh/config 中添加以下规则:

      Host *
        SetEnv LC_ALL=C
      

      假设您的服务器在/etc/ssh/sshd_config 中有以下行:

      AcceptEnv LANG LC_*
      

      还要检查:man ssh_configman sshd_config

      【讨论】:

        【解决方案4】:

        对于 CentOS 或 Amazon AMI Linux,将这些行添加到 /etc/environment(如果不存在,则创建它):

        LANG=en_US.UTF-8
        LC_ALL=en_US.UTF-8
        

        要通过 SSH 控制台编辑此文件,请尝试

        sudo nano /etc/environment
        

        编辑

        对于 Debian 相关的发行版(Ubuntu 等),您应该检查 /etc/default/locale 是否为空。这是在 dpkg-reconfigure locales 中选择 None 的结果,如果用户通过 SSH 访问(请参阅 Debian Wiki),则建议这样做。

        /etc/environmentdeprecated since Debian Lenny (5.0)

        【讨论】:

        • /etc/default/locale 似乎是这种配置更合理的地方。
        • @FranklinYu 似乎 /etc/environment 仅在 Debian 中被弃用。更新了我的答案。
        • 在 Fedora 中我会添加:LC_CTYPE="en_US.UTF-8"/etc/locale.conf
        【解决方案5】:

        就我而言,在 Slackware64 14.1 上出现错误:

        -bash: warning: setlocale: LC_ALL: cannot change locale (en_DK.UTF-8)
        

        原来是缺少 glibc 包。

        安装包:

        glibc-2.17-x86_64-11_slack14.1
        glibc-i18n-2.17-x86_64-11_slack14.1
        

        解决了这个问题。

        我的 /etc/profile.d/lang.sh 包含:

        export LANG=en_DK.UTF-8
        export LANGUAGE=en_DK.UTF-8
        export LC_ALL=en_DK.UTF-8
        
        export LC_COLLATE=C
        

        享受吧。

        【讨论】:

        【解决方案6】:

        请尝试下一步:

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

        【讨论】:

        • 将此作为对您之前原始答案的编辑,或作为对此的评论。
        【解决方案7】:

        在 bashrc 的根目录下添加以下内容:

        vi /root/.bashrc
        
        export LC_ALL=en_US.UTF-8
        
        export LANG=en_US.UTF-8
        

        然后重启你的系统。

        【讨论】:

        • 这只是为root用户设置环境变量,当你看到警告信息时,可能不是你登录的用户
        • 这适用于我,在我的本地用户中,因为我没有 root 访问权限,不需要重新启动,只需注销,然后登录。谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 2019-07-17
        • 2020-12-17
        • 2021-12-27
        • 2019-08-27
        相关资源
        最近更新 更多