1. 问题描述
将系统由中文切换到英文后,使用 SSH 连接服务器时,一直出现如下的错误信息:
- locale: Cannot set LC_CTYPE to default locale: No such file or directory
或
- -bash: 警告:setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8): 没有那个文件或目录
查看当前系统语言环境,如下:
➜ ~ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
我发现切换英文后,这里的设置产生了异常,使用命令 locale -a | grep UTF-8
可以发现,当前系统中并没有 UTF-8
这个语言文件,因此需要修改成 en_US.UTF-8
2. 解决
方式一:临时修改
➜ ~ export LC_ALL=en_US.UTF-8
➜ ~ locale
LANG=
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
方式二:永久修改
修改对应的配置文件,如 ~/.bashrc 或 ·/.zshrc,然后使用 source ~/.zshrc
让对应的配置文件生效。