如何在语言环境中设置 LANG,尽管它在 ubuntu 的 /etc/default/locale 中以支持 unicode?

use*_*789 8 ubuntu emacs configuration unicode locale

我运行Ubuntu 12.04,我无法将语言环境设置为en_US.utf8。我按照此处所述LANG进行配置。/etc/default/locale

$cat /etc/default/locale
LANG=en_US.utf8
$locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=POSIX
Run Code Online (Sandbox Code Playgroud)

但它不起作用,正如您在上面看到的那样。如何将此LANG变量设置为en_US.utf8

我问的原因是,当我运行时echo -e "\x03\bb",我得到了unicode greek letter lambda symbol正确显示,但我的问题是 emacs。在 emacs 中,我无法显示 unicode 符号,例如:C-x 8 RET 03bb输出\u03bb,而不是greek letter lambda symbol. 我认为问题在于这些语言环境设置,但我无法设置它们。

编辑:我认为问题已解决。

$su $USER -c 'env; echo ==; locale' | egrep '==|LANG'

LANG=en_US
LANGUAGE=en_US
==
LANG=en_US
LANGUAGE=en_US
Run Code Online (Sandbox Code Playgroud)

我的解决方案是,我使用 mintty ssh 进入Ubuntu 12.04 Server Edition,所以我必须配置~/.pam_environment~/.etc/ssh_config,和~/bashrc。但是我对 emacs 的真正问题不是关于这个 ubuntu 配置,所以我不知道这个LANG变量配置是用来做什么的 ,或者我是否将它设置为正确的值。

编辑 2: 以下是我为解决此问题而采取的步骤,遵循 #ubuntu irc 频道中 ansivirus 的建议:

将此添加到 ~/.bash_profile

export LANGUAGE="en"
export LANG="C"
export LC_MESSAGES="C"
Run Code Online (Sandbox Code Playgroud)

将此添加到~/.pam_environment(所以这一定是有问题的)

LANG=en_US
LANGUAGE=en_US
Run Code Online (Sandbox Code Playgroud)

将此添加到 /etc/ssh/sshd_config

UsePAM yes
Run Code Online (Sandbox Code Playgroud)

注释掉这个 /etc/ssh/ssh_config

#   SendEnv LANG LC_*
Run Code Online (Sandbox Code Playgroud)

小智 1

尝试重新安装locales

apt-get install --reinstall locales
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多内容。