在 Ubuntu 15.04 VPS 中更改语言环境未保存

Changing locale in Ubuntu 15.04 VPS is not being saved

我刚买了一个 VPS,我正在使用 SSH 播放它。 在安装了几个软件包之后,我发现我的区域设置有问题(我需要 en_US.UTF-8 但我有 Latin1。我用谷歌搜索了它,但即使我认为我已经更改了区域设置,它们仍然保留回到原来的,我仍然遇到软件安装问题。 所以,我得到:

root@myname:~# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=pt_PT.UTF-8
LANGUAGE=
LC_CTYPE="pt_PT.UTF-8"
LC_NUMERIC="pt_PT.UTF-8"
LC_TIME="pt_PT.UTF-8"
LC_COLLATE="pt_PT.UTF-8"
LC_MONETARY="pt_PT.UTF-8"
LC_MESSAGES="pt_PT.UTF-8"
LC_PAPER="pt_PT.UTF-8"
LC_NAME="pt_PT.UTF-8"
LC_ADDRESS="pt_PT.UTF-8"
LC_TELEPHONE="pt_PT.UTF-8"
LC_MEASUREMENT="pt_PT.UTF-8"
LC_IDENTIFICATION="pt_PT.UTF-8"
LC_ALL=

但是之前,我做过:

locale-gen en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
export LS_ALL=en_US.UTF-8

那么,我能永远解决这个问题吗?

PS:我正在使用 SSH 完成所有这些工作。

那是因为我在本地机器上的 locale 设置为葡萄牙语,SSH 转发到服务器并尝试在服务器上使用,但服务器没有安装它。 我本可以停止将 locale 环境变量从我的本地机器转发到服务器。为此,我会在本地 /etc/ssh/ssh_config 文件中注释 SendEnv LANG LC_* 行。 相反,我决定: 1) 生成 locale - 在服务器上用 sudo locale-gen en_US.UTF-8 生成英文 locale 2) 停止从我的本地计算机到服务器接受 locale 环境变量。为此,我在远程 /etc/ssh/sshd_config 文件中注释了 AcceptEnv LANG LC_* 行。请注意,为此我必须安装 nano 包来编辑文件(在 sudo apt-get install nano 之后,当我在文件目录中时,我只是做了 nano filename )。 3) 将服务器 locale 设置为英语 - 通过再次使用 nano filename 将以下行添加到我的远程 ~/.bashrc~/.profile 文件中(不要忘记它们是内部的隐藏文件您的主目录,这样它们就不会出现在简单的 ls 搜索中;您需要使用 ls -la 命令:

export LANGUAGE="en"
export LANG="C"
export LC_MESSAGES="C"
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
export LS_ALL=en_US.UTF-8

我还重新启动了 VM,在此之前我关闭了 SSH 会话并重新进入以查看更改是否有效。