この章では、JFP によって日本語のサポートが可能になった SunOS に対して、必要に応じて行うさまざまな環境設定について説明します。ここでは、端末エミュレータなどの CUI 環境の設定方法について説明します。GUI については、第 7 章「GUI 環境の起動」と第 8 章「日本語 Solaris CDE と日本語 OpenWindows 環境に共通の機能」を参照してください。
国際化されたシステムプログラムやアプリケーションがどの言語および地域 (ロケール) を想定して動作するかは、一般に、ユーザーが特定の環境変数をどのように設定しているかによって異なります。日本語環境を想定して動作させるもっとも簡単な方法は、LANG という環境変数に ja または ja_JP.EUC (日本語 EUC を扱う) 、ja_JP.PCK (PCK を扱う) または ja_JP.UTF-8 (UTF-8 を扱う) ロケール名を設定することです。環境変数の設定方法は、使用しているシェルプログラムによって異なりますが、 csh (C シェル) の場合、以下のコマンドを実行します。
sun% setenv LANG locale1 |
1. locale には ja、ja_JP.EUC、ja_JP.PCK または ja_JP.UTF-8 を指定します。
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .login の中でこの設定を行うとよいでしょう。設定方法の例については、第 5 章「国際化 SunOS コマンドの利用」で説明します。sh (Bourne シェル) または ksh (Korn シェル) の場合は、以下のコマンドを実行します。
sun$ LANG=locale2 sun$ export LANG |
2. locale には ja、ja_JP.EUC、ja_JP.PCK または ja_JP.UTF-8 を指定します。
常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .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 locale3 sun% setterm -x Codeset4 |
3. locale には ja、ja_JP.EUC、ja_JP.PCK またはja_JP.UTF-8 を指定します。
4. Codeset には JapanEUC、PCK または UTF-8 を指定します。
sh または ksh の場合 :
sun$ LANG= locale5; export LANG sun$ setterm -x Codeset6 |
5. locale には ja、ja_JP.EUC、ja_JP.PCK またはja_JP.UTF-8 を指定します。
6. 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.eucJP |
% setenv LANG ja_JP.eucJP % setterm -x JapanEUC |
% LANG=ja_JP.eucJP; 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 オペレーティング環境自体と、JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。たとえば、以下のコマンドがあります。
ls | |
---|---|
/usr/bin/ls | 国際化機能を持つ標準の ls コマンド |
/usr/ucb/ls | BSD 互換性パッケージの ls コマンド |
/usr/xpg4/bin/ls | XPG4 準拠の ls コマンド |
mailx | |
---|---|
/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 オペレーティング環境自体と、JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。これに伴って、オンラインマニュアルページについても、同名のエントリが複数の場所に存在することがあります。たとえば、以下のマニュアルページがあります。
ls | |
---|---|
/usr/share/man/man1/ls.1 | 国際化された標準の ls コマンド用 |
/usr/share/man/man1b/ls.1b | BSD 互換性パッケージの ls コマンド用 |
mailx | |
---|---|
/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 シェルの初期化に使われます。.cshrc ファイルは、C シェルがログインシェルとして起動されたときにも .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) を参照してください。
# The initial user defaults for sh. LANG=ja export LANG PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:. export PATH setterm -x JapanEUC if [ "$MANPATH" = "" ] then MANPATH=/usr/SUNWale/share/man:/usr/share/man export MANPATH fi ENV=$HOME/.kshrc export ENV |
この例では、環境変数 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 が実行されてエラーメッセージが表示されるのを防ぐためのものです。ただし、これは完全な解決策にはなりません。