Debian 6(64ビット)VPSがありますが、ロケール環境変数LANGとLC_ *を設定できないようです。 (以下のすべてはルートです)。
vps:~# locale -a
C
POSIX
en_US.utf8
nl_NL.utf8
vps:~# 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=
vps:~# cat /etc/default/locale
# File generated by update-locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_COLLATE=POSIX
これは私のSSHクライアントを介して提供されたロケールをオーバーライドする必要がありますが、デフォルトのロケールは機能しません。
.profile、.bashrc、/etc/environment、および/etc/profileにはロケール設定は含まれていません。これらの環境変数が出てくる他の場所を見つけることができませんでした。
me:~# grep "LANG" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~# grep "LC_" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~#
私のSSHクライアント設定も機能しませんでしたが、他のVPSで動作しました。ローカルで私の/etc/ssh/ssh_configには次のものがあります。
SendEnv LANG LC_*
VPSでは、/etc/ssh/sshd_configには次のものが含まれます。
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
変数が有効であるべきかどうかはわかりませんが、私のVPSの/etc/pam.d/loginに次のものが含まれています。
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session required pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/sshd には以下が含まれます。
# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth required pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth required pam_env.so envfile=/etc/default/locale
(私のものには/etc/security/pam_env.conf
コメントオプションのみが含まれています)
したがって、私は/etc/default/localeまたはSSHクライアントのロケールが適用されることを許可していないため、デフォルトはPOSIXに設定されます(または明示的にPOSIXを強制する項目)。邪魔になる可能性がありますか?それともそれが何であるかを調べる方法は何ですか?
私は.bashrcで他のことをすることができますが、export LC_CTYPE=en_US.UTF-8
これはうまくいきます。しかし、私はこの動作を理解しようとしていますが、これは私が使用している他のDebian(6または7)インストールの動作とは異なります。
編集:詳細:
- システムを再起動しましたが、何の効果もありませんでした。
- /etc/ssh/sshd_configに
UsePAM yes
; - 私も
en_US.utf8
代替名として試しました/etc/default/locale
。
答え1
sshd設定ファイルの[PermitUserEnvironment]もyesに設定されていることを確認する必要があります。デフォルト値が何であるかわかりません。