ロケール環境変数の設定は適用されません。 [閉じる]

ロケール環境変数の設定は適用されません。 [閉じる]

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に設定されていることを確認する必要があります。デフォルト値が何であるかわかりません。

おすすめ記事