我有一个稍微定制的Debian映像的问题,我试图做一些无头的工作。 问题是,已安装的语言环境列表已经缩小为:
C en_GB en_GB.iso88591 en_GB.iso885915 en_GB.utf8 POSIX
但是,当我作为根用户login(以其他方式作为香草configuration文件)时,我发现:
~# set | grep LC_ LC_CTYPE=en_US.UTF-8
这是唯一的LC_环境variables集,大概这意味着它被明确地设置在某处(并且假定/ etc / default / locale只包含LANG = en_GB,我看不到任何其他的替代select)。 但是,我不能看到它被设置的位置,而且错误的是阻止安装postgresql-8.4。 我知道我可以做一个
LC_CTYPE=en_GB apt-get install postgresql-8.4
来解决这个问题,但是我真的很想知道这个设置是从哪里来的,而且我真的不喜欢安装一个不必要的语言环境来让这个消失。 那么:这个LC_CTYPE设置从哪里来,我该如何让它消失呢?
为了将来的参考,我已经发现了这个问题,这与Bash毫无关系。
问题是sshd_config有以下条目:
AcceptEnv LANG LC_*
这允许我的本地环境variables名为LC_whatever(包括LC_CTYPE,有问题的)重写远程设置,所以当我连接时,ssh进程相应地设置其环境variables,并且bash进程忠实地inheritance它们。 在这个过程中没有任何地方检查到LC_CTYPE设置在SSH连接的远端是有效的。
我的临时解决方法是在远端运行的特定命令中指定一个已知的好LC_CTYPE。 我不知道这是什么“正确的”解决scheme。
您可以安装缺less的区域设置:
apt-get install debconf dpkg-reconfigure locales
select您想要安装的语言环境。