ロケールを設定したい。
私の〜/ .profileにこれがあります
#language
export LANG=en_GB.utf8
export TESTING123=en_GB.utf8
しかし、私が入力すると:
echo $LANG $TESTING123
取得します(LANGは設定されていませんが、TESTING123が設定されています)
en_US.utf8 en_GB.utf8
私が行った場合 export LANG=en_GB.utf8
シェルで直接、すべて機能します
#export LANG=en_GB.utf8
#echo $LANG
en_GB.utf8
#locale
LANG=en_GB.utf8
LANGUAGE=
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=
システムはDebian 7.2、シェルはbashです。
.profile
.bash_profile
... etcなどの.bashrc
の適用後に変数を設定できる他の多くの初期化ファイル、または単に.profile
自体から呼び出される他の非標準ファイルがあります。まず、ホームディレクトリで変数のすべての出現箇所を探すことをお勧めします。
grep "LANG=" .*
Debianでは、次のコマンドを使用してロケールを設定します。
# dpkg-reconfigure locales
/etc/default/locale
ファイルを作成し、LANG
変数のみを追加します。すべてのLC_*
変数をカスタマイズする場合は、それらにも追加できます。
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE=C
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=C
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
手動で実行しなければならないのが原因で、最終的にこれを理解しました。 debianでは、これはupdate-locale
ユーティリティ。コマンド
update-locale --reset
/etc/default/locale
ファイルを無視します(LANG
変数をコメント化するだけです); locale
の結果:
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
コマンド
update-locale LANG=en_US.UTF-8
あなたのLANG
を...に設定します...あなたはそれを推測したen_US.UTF-8
結果としてlocale
が生成されます:
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
そして最後に、私のすべての拠点をカバーするだけです...
update-locale LANG=C
LANG
をC
に設定し、locale
を出力します。
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
~/.bash_profile
または~/.bash_login
があるかどうかを確認してください。それらは~/.profile
をオーバーライドします。
man bash
から:
Bashが呼び出されるとインタラクティブログインシェルとしてまたは--loginオプションを使用した非インタラクティブシェルとして、最初にファイル
/etc/profile
からコマンドを読み取り、実行します(そのファイルが存在する場合) 。そのファイルを読み取った後、~/.bash_profile
、~/.bash_login
、および~/.profile
をこの順序で検索し、存在するコマンド最初のコマンドからを読み取って実行します。読み取り可能です。
「インタラクティブloginシェルとして」は、インタラクティブシェルがログインシェルではないことが多いため、重要です。たとえば、これらのファイルの1つを変更して新しいGUI端末を起動しただけでは、適用されません。実際にログインしたときにのみ読み取られます。
別の可能性として、システム全体でLANGがリセットされているbashrc
;ソースが~/.bashrc
で提供されているかどうかを確認します。たとえば、.
grep LANG /etc/bashrc