この章では、JFP によって日本語のサポートが可能になった SunOS に対して、必要に応じて行うさまざまな環境設定について説明します。ここでは端末エミュレータなどの CUI 環境の設定方法について説明しますので、GUI に関しては、第 7 章「GUI 環境の起動」及び第 8 章「Solaris CDE と日本語 OpenWindows 環境に共通の機能」を参照してください。
国際化されたシステムプログラムおよびアプリケーションは、一般に、ユーザーが特定の環境変数をどのように設定しているかによって、どの言語および地域 (ロケール) を想定して動作するかを決定します。日本語環境を想定して動作を行うもっとも簡単な方法は、LANG という環境変数に ja (日本語 EUC を扱う) 、ja_JP.PCK (PCK を扱う) または ja_JP.UTF-8 (UTF-8 を扱う) ロケール名を設定することです。環境変数の設定方法は、ユーザーの使用しているシェルプログラムによって異なりますが、 csh (C シェル) の場合、以下のように実行します。
sun% setenv LANG locale1 |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .login の中でこの設定を行うとよいでしょう。設定方法の例については第 5 章「国際化 SunOS コマンドの利用」で説明します。sh (Bourne シェル) または ksh (Korn シェル) の場合には、以下のように実行します。
sun$ LANG=locale1 sun$ export LANG
|
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。設定方法の例については第 5 章「国際化 SunOS コマンドの利用」で説明します。
上に述べた設定によって、ユーザーが実行する国際化プログラムは日本語環境を想定して動作するようになり、一般に、メッセージや時刻の表示が日本語で行われたり、日本語文字の処理などが正しく行われたりするようになります。ただし、国際化されたウィンドウシステムが動いていない Sun ワークステーションの画面上など、英語は表示できても日本語を表示できないような状態では、日本語の文字は判読できません。このような場合には、一時的にロケールを C に設定し、英語のメッセージを表示させたほうがよいでしょう。この場合、csh (C シェル) では以下のように実行します。
sun% setenv LANG C |
sh (Bourne シェル) または ksh (Korn シェル) では、以下のように実行します。
sun$ LANG=C sun$ export LANG |
ロケールの設定は、LC_CTYPE、LC_NUMERIC、LC_TIME、LC_COLLATE、LC_MONETARY、LC_MESSAGES、LC_ALL など、LANG よりも細かいカテゴリごとに行うこともできます。各ロケールカテゴリがプログラムの動作に与える影響については、各プログラムのリファレンスマニュアルを参照してください。
国際化された端末エミュレータウィンドウ (dtterm、shelltool、cmdtool など) や日本語端末上で正しく日本語の入出力を行うためには、 tty (端末ドライバ) が日本語の文字データを正しく透過させ、日本語の文字幅に応じた処理を正しく行わなくてはなりません。このためには、次のようにロケールの設定が完了している状態で setterm(1) コマンドを実行して初期化する必要があります。
csh の場合 :
sun% setenv LANG locale1 sun% setterm -x Codeset2 |
1. locale には ja、ja_JP.PCK またはja_JP.UTF-8 を指定します。
2. Codeset には JapanEUC、PCK または UTF-8 を指定します。
sh または ksh の場合 :
sun$ LANG= locale1; export LANG sun$ setterm -x Codeset2 |
1. locale には ja、ja_JP.PCK または ja_JP.UTF-8 を指定します。
2. Codeset には JapanEUC、PCK または UTF-8 を指定します。
日本語ロケール間でロケールを切り替える場合は、その都度、端末設定も行うようにしてください。使用する端末が同じでも、ロケールが異なると使用する STREAM モジュールが異なりますので、再度 setterm が実行されないと正しく表示できなくなります。
常に日本語端末環境を使用するユーザーは、ホームディレクトリの初期化ファイル(csh の場合には .login または .cshrc、sh の場合には .profile) の中でこの設定を行うとよいでしょう。次に ロケールの指定と sh の対応表を示します。
表 3-1 ロケールの指定と sh の対応
ロケール |
csh |
sh、ksh |
---|---|---|
ja |
% setenv LANG ja % setterm -x JapanEUC |
% LANG=ja; export LANG % setterm -x JapanEUC |
ja_JP.PCK |
% setenv LANG ja_JP.PCK % setterm -x PCK |
% LANG=ja_JP.PCK; export LANG % setterm -x PCK |
ja_JP.UTF-8 |
% setenv LANG ja_JP.UTF-8 % setterm -x UTF-8 |
% LANG=ja_JP.UTF-8; export LANG % setterm -x UTF-8 |
端末オプションの詳細は、第 6 章「日本語環境用 SunOS コマンド」および setterm(1) のマニュアルページを参照してください。
Solaris 2.6 オペレーティング環境およびその互換バージョン自体、およびそこに JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。たとえば、以下のコマンドがあります。
/usr/bin/ls |
国際化機能を持つ標準の ls コマンド |
/usr/ucb/ls |
BSD 互換性パッケージの ls コマンド |
/usr/xpg4/bin/ls |
XPG4 準拠の ls コマンド |
/usr/bin/mailx |
標準の mailx コマンド |
/usr/SUNWale/bin/mailx |
国際化機能の拡張された mailx コマンド |
実行するコマンドのパスによっては、思い通りに国際化機能が利用できないことがあります。日本語環境で国際化機能を最大限に利用したいユーザーは、シェルのコマンド検索ディレクトリの優先順位を次のように設定するとよいでしょう。なお、対応する /usr/xpg4/bin/<コマンド名> がないときは /usr/bin/<コマンド名> が XPG4 準拠になっています。
/usr/xpg4/bin > /usr/SUNWale/bin > /usr/bin > /usr/ucb |
設定方法は、ユーザーの使用しているシェルプログラムによって異なりますが、csh (C シェル) の場合、以下のように set コマンドを実行します。
sun% set path = (/usr/xpg4/bin /usr/SUNWale/bin /usr/bin /usr/ucb .) |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .cshrc の中でこの設定を行うとよいでしょう。また、.cshrc ファイルを編集して path パラメタを変更した後、すぐにその内容を有効にしたいときには次のように source コマンドを実行します。
sun% source .cshrc |
sh (Bourne シェル) または ksh (Korn シェル) の場合には、以下のようにパラメタ PATH を設定します。
sun$ PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:. sun$ export PATH |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。
現在デフォルトで実行されるコマンドがどのディレクトリにあるかは、which(1) コマンドで確かめることができます。
前の項で述べたように、Solaris 2.6 オペレーティング環境およびその互換バージョン自体、およびそこに JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。これに伴って、オンラインマニュアルページについても、同名のエントリが複数の場所に存在することがあります。たとえば、以下のマニュアルページがあります。
/usr/share/man/man1/ls.1 |
国際化された標準の ls コマンド用 |
/usr/share/man/man1b/ls.1b |
BSD 互換性パッケージの ls コマンド用 |
/usr/share/man/man1/mailx.1 |
標準の mailx コマンド用 |
/usr/SUNWale/share/man/man1/mailx.1 |
国際化された mailx コマンド用 |
参照するマニュアルページのパスによっては、思い通りに国際化機能の情報が得られないことがあります。日本語環境で国際化機能を最大限に利用するユーザーは、シェルのコマンド検索ディレクトリの優先順位とともにオンラインマニュアルページの検索パスの優先順位を次のように設定するとよいでしょう。
/usr/SUNWale/share/man > /usr/share/man |
設定方法は、ユーザーの使用しているシェルプログラムによって異なります。
csh (C シェル) の場合は、次のように環境変数 MANPATH を設定します。
sun% setenv MANPATH /usr/SUNWale/share/man:/usr/share/man |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .cshrc でこの設定を行うとよいでしょう。
sh (Bourne シェル) または ksh (Korn シェル) の場合は、環境変数 MANPATH を次のように設定します。
sun$ MANPATH=/usr/SUNWale/share/man:/usr/share/man sun$ export MANPATH |
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。
ここではユーザーのホームディレクトリの .login、.cshrc、.profile といったシェルの初期化ファイルを利用して日本語環境用の設定を行う例を説明します。初期化ファイルの内容は個々のユーザーの必要に応じて変わるものであり、目的の達成方法も一つではありません。ここに挙げる例はあくまで参考であることに注意してください。
dtlogin からログインした場合、以降に述べる (.cshrc を除く) 初期化ファイルは読み込まれないため、Solaris CDE アプリケーションには反映されません。Solaris CDE アプリケーションの実行環境に反映させたい環境変数などの設定は、第 7 章「GUI 環境の起動」を参照してください。
ユーザーのホームディレクトリの .login ファイルは、ユーザーが C シェル (csh) を使ってシステムに login したときに C シェルの初期化に使われます (詳細は、csh(1) を参照してください)。一般に環境変数の設定などは、このファイルで行います。
# The initial user defaults for csh. setenv LANG ja setterm -x JapanEUC if ( ! $?MANPATH ) then setenv MANPATH /usr/SUNWale/share/man:/usr/share/man endif |
最初の実行文で環境変数 LANG が、日本語ロケール名「ja」に設定されます。
"setterm -x JapanEUC" では、端末は日本語 EUC であると設定しています。
次の if 文は、オンラインマニュアルページの検索パスを条件に応じて設定します。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。
ユーザーのホームディレクトリの .cshrc ファイルは、ユーザーが C シェル (csh) を起動したときに C シェルの初期化に使われます。C シェルがログインシェルとして起動されたときにも .cshrc ファイルは .login に先立って実行されます (詳細は、csh(1) を参照してください)。
set path=(/usr/xpg4/bin /usr/SUNWale/bin /usr/bin /usr/ucb .) if ($?prompt) setterm -x JapanEUC |
この例では、はじめの行でシェル変数 path に コマンド検索パスの設定だけを行なっています。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。
次の行では、ロケールの設定を変えた後に C シェルが起動し直される場合などのため、"setterm -x JapanEUC" を実行しています。行の最初の if 文は、C シェルが端末以外の装置を標準入力として起動された場合に、stty が実行されてエラーメッセージが表示されるのを防ぐためのものですが、完全な解決策ではありません。
ユーザーのホームディレクトリの .profile ファイルは、ユーザーが Bourne シェル (sh) または Korn シェル (ksh) を使ってシステムにログインしたときに、シェルのユーザー固有の初期化に使われます (詳細は、sh(1) を参照してください)。
この例では、環境変数 LANG でのロケール設定、環境変数 PATH でのコマンド検索パスの設定、tty のオプション設定が順次行われます。
"setterm -x JapanEUC" では、端末は日本語 EUC であると設定しています。
if 文では、それぞれ条件に応じて環境変数 MANPATH が設定されます。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。
最後のパラメタ ENV は、Korn シェル (ksh) に対して起動時コマンド実行ファイル名を設定します。このパラメタ設定は、Bourne シェル (sh) に対しては特別な意味を持ちません。
Korn シェル (ksh) に対して起動時コマンドファイルを用意する場合、そのファイル名をパラメタ ENV に設定します。パラメタ ENV の設定例については、「.profile」を参照してください。Korn シェルがログインシェルとして起動されたときにも、Korn シェル起動時コマンドファイルは .profile のあとで実行されます (詳細は、ksh(1) のマニュアルページを参照してください)。
export PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:. if expr "$-" : "i" > /dev/null; then setterm -x JapanEUC fi |
この例では、はじめの行でパラメタ PATH にコマンド検索パスの設定だけを行なっています。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。
次の 3 行では、ロケールの設定を変えた後に Korn シェルを起動し直す場合などのため、"setterm -x JapanEUC" を実行しています。
if 文は、Korn シェルが端末以外の装置を標準入力として起動された場合に、setterm が実行されてエラーメッセージが表示されるのを防ぐためのものですが、完全な解決策ではありません。