このページではLinuxのLANG変数についてお伝えしよう。
LANG変数は環境の言語等のローカル設定を変更するための変数だ。使い方を含めて確認しておこう。
環境変数とは?
LANG環境変数について記述する前に「環境変数」について記述しよう。
少々まわりくどいが環境変数とは「システム全体に適応される変数であり、どのアプリケーションからも参照できる変数」のことである。
基本的にLinuxに限らずWindowsにも同じ仕組みは存在する。代表例をあげると「PATH」だろう。これを設定するとどこのディレクトリにいても、フルパスを指定せずにコマンドをよびだすことが可能となっている。
コマンドをフルパスで指定せずともプログラムファイルを実行できるのは「PATH」環境変数にデフォルトで。「/usr/bin」や「/usr/sbin」などが設定されているおかげである.
ユーザが追加指定することも可能となっている。文字通り環境全体に影響を与える変数である。
LANG環境変数
ローカライゼーションを行い日本語の表示対応をする場合もっともユーザが着目するのが「LANG環境変数」だろう。現在の状況では、GUI環境で日本語を表示したい場合などはLANG変数に「ja_JP.UTF-8」もしくは「ja_JP.utf8」を適応することがほとんどだ。
LANG変数に「ja_JP.UTF-8」を適応し、一度ログアウトして再ログインすると大概のアプリケーションのインターフェイスは日本語表記になっているはずである。ただしGUIのターミナルではなく、実機のコンソールでは「ja_JP.UTF-8」をLANG変数に適応すると文字化けをおこすので注意しよう。
実機コンソールで日本語部分が文字化けをおこしてしまう場合、取り敢えず英語表記にするために「LANG=C」とするとよい。なおコンソール環境をメインとする場合や、最低限の英語が表示されていればよい場合などは「LANG=C」と決め打ちしてしまってもかまわないだろう。
ローカライゼーションに関しての環境変数はLANG以外にも複数存在するが、ローカライゼーションに限って言えばLANG変数を指定するだけでほぼ問題ない。
試しにローカライゼーション系の環境変数を表示する「locale」コマンドを実行してみよう。
$ locale
Fedora24などでは「ja_JP.UTF-8」、CentOS7では「ja_JP.utf8」がほぼ全てのローカライゼーション系環境変数に適応されているのがわかる。
この状態で
$ man ls
としてみるとlsコマンドの日本語マニュアルが表示されるはずだ。
ここで試しに
$ LANG=C
としてみよう、そしてその後localeコマンドを実行してみよう。
$ locale
そのあと
$ man ls
とすると、英語表記のlsコマンドのマニュアルが参照されるはずだ。
ここで不思議におもわれるかもしれないが、LANG変数を変更するとローカライゼーション系の環境変数はほぼ全て統一変更されるのである。
ローカライゼーション系環境変数のなかでは「LANG」「LC_ALL」は少々特殊なものとなっており、LC_ALLが設定された場合全てのローカライゼーション系環境変数は必ずその値が使用されるようになっている。LANGも同じような挙動をしているようにみえるがLC_TIMEなどを個別に設定することが可能となっている。
一般的な設定としてはLANGを設定すれば十中八九問題ないが、デフォルトの設定をLANGで設定して、必要な部分を英語表記にするために変更するというパターンもある。
なお今おこなった設定は現在の環境内のみで有効であり、「exit」コマンドなどでログアウトすると設定はもどってしまう。
なので設定を恒久的に維持したい場合はシェル(デフォルトではbash)が起動時に読みこむファイル「.bashrc」や「.bash_profile」などに「export LANG=ja_JP.UTF-8」と記述しログイン毎に実行させるか、もしくは指定のファイルに記述することになる。
どちらにせよ環境変数を指定していることにかわりはない。
指定出来るロケールに関しては
$ locale -a
とすると使用可能なロケールが参照できる。現在恒久的に指定しているlocale情報はCentOS7の場合は「/etc/locale.conf」に保存されている。通常日本国内で使用するのであれば、現状「ja_JP.UTF-8」もしくは「ja_JP.utf8」で問題ないはずだ。
環境変数の設定と確認方法
デフォルトのシェルとしてbashが設定されている場合、例えばLANG環境変数の場合単に
$ LANG=C
とすれば環境変数が設定できる。確認や参照をしたい場合「echo」コマンドを使用して確認する。
$ echo $LANG
とするとLANGの値が確認できる。変数の前に「$」を必ずつけること、そうでないと単に「LANG」という文字列がかえってくるだけになる、bashで値を参照するには「$」に気をつけよう。
「.bashrc」や「.bash_profile」で設定する場合
1 2 3 |
LANG=ja_JP.utf8 export LANG |
もしくは
1 |
export LANG=ja_JP.utf8 |
とする。
CentOS7でのLANG設定方法
CentOS7では「localectl」コマンドが用意されているのでそちらを使用したほうがよいだろう。
現在のロケールの確認
# localectl status
使用可能なロケールを確認
# localectl list-locales
実際に変更してみよう。標準英語環境を指定したい場合
# localectl set-locale LANG=C
日本語を表示したい場合
# localectl set-locale LANG=ja_JP.utf8
とする。コマンドを実行したら一度ログアウトすると確実に設定が反映される。
# less /etc/locale.conf
とすると設定が書きかわっていることが確認できるはずだ。
まとめ
このページではLinuxのLANG変数についてお伝えしてきた。例えば、文字コードが違う複数のサイトがひとつのサーバに設置されているときなど、しょっちゅう叩く必要がある。ぜひ使い方は覚えておこう。
コメント