ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 5: 標準、環境、マクロ Oracle Solaris 11 Information Library (日本語) |
- ユーザー環境
プロセスの実行を開始すると、exec 関数のファミリの中の 1 つが環境と 呼ばれる文字列の配列を用意します (exec(2) を参照)。規約上、これらの文字列は variable (変数) = value (値) という形式をとります (たとえば、PATH=/sbin:/usr/sbin)。この環境変数により、プログラムはプログラムの環境に関する情報を利用できるようになります。
環境中に名前を設定するには、sh(1) における name=value 引数と export コマンドを使用するか、あるいは exec 関数のうちの 1 つを使用します。.profile ファイル内でエクスポートされる MAIL、PS1、PS2、IFS などのシェル変数と環境変数との間で矛盾を生じさせるのは避けてください。詳細は profile(4) を参照してください。
アプリケーションが利用できる環境変数を以下に示します。これらの変数は、実行環境において設定されていることが期待されています。
ユーザーのログインディレクトリ名。パスワードファイル (passwd(4) を参照) に基づいて login(1) が設定します。
国際化情報を指定するのに用いる文字列。ユーザーはこの情報を利用して、さまざまな国の慣習に従って作業を進めることができます。setlocale(3C) 関数の引数 locale に "" を設定して呼び出すと、この関数は環境変数 LANG を調べます。特定のカテゴリに対する環境変数が設定されていない、あるいは NULL に設定されている場合は、LANG がデフォルト時のロケールとして使用されます。ただし LC_ALL が空文字列でない正当な値に設定されていれば、変数 LANG やほかの LC_* 変数の代わりにその値が使用されます。たとえば、setlocale(LC_CTYPE, "") のように呼び出されると、setlocale() は、まず環境変数 LC_CTYPE が設定されていて NULL でないことを問い合わせます。LC_CTYPE が未設定または NULL の場合は、setlocale() は次に環境変数 LANG を調べて、それが設定されていて NULL でないことを確認します。LANG と LC_CTYPE の両方が未設定または NULL の場合、デフォルトの C ロケールを使用して LC_CTYPE カテゴリを設定します。
ほとんどのコマンドは、ほかの処理を行う前に setlocale(LC_ALL, "") を呼び出します。この関数を用いて適切な環境変数を設定することにより、コマンドをさまざまな国の慣習に従って使用できるようになります。
以下に示す環境変数が各カテゴリの setlocale(3C) と対応しています。
空文字列でない正当な値に設定されていれば、LANG およびすべての LC_* 変数の値に代わって使用されます。
使用する文字照合順序を指定します。このカテゴリにあてはまる情報は、localedef(1) コマンドによって作成されるデータベース内に格納されています。この環境変数は strcoll(3C) および strxfrm(3C) に影響を及ぼします。
文字分類、文字変換および複数バイト文字の幅を指定します。LC_CTYPE が正当な値に設定されていると、呼び出し側のユーティリティーは、該当するロケールに合った文字を含んでいるテキストやファイル名を表示したり処理したりできます。例: 各文字の幅が 1 から 3 バイトの拡張 UNIX コード (EUC) 文字、およびカラム幅が 1 から 3 の EUC 文字。デフォルトの C ロケールは、7 ビットの ASCII 文字セットに対応していて、ISO 8859-1 の文字だけが有効です。このカテゴリにあてはまる情報は、localedef() コマンドによって作成されるデータベース内に格納されています。ctype(3C)、mblen(3C)、および他の多くのコマンド (たとえば、cat(1)、ed(1)、ls(1)、vi(1)) がこの環境変数を使用します。
使用するメッセージデータベースの言語を指定します。たとえば、アプリケーションは、フランス語用のメッセージデータベースとドイツ語用のメッセージデータベースを使い分けることができます。メッセージデータベースは、mkmsgs(1) コマンドで作成します。exstr(1)、gettxt(1)、srchtxt(1)、gettxt(3C)、gettext(3C) がこの環境変数を使用します。
特定のロケールで使用する通貨記号および区切り記号を指定します。このカテゴリにあてはまる情報は、localedef(1) コマンドによって作成されるデータベース内に格納されています。localeconv(3C) がこの環境変数を使用します。
小数点および千の位の区切り記号を指定します。このカテゴリにあてはまる情報は、localedef() コマンドによって作成されるデータベース内に格納されています。デフォルト値の C ロケールは、小数点にピリオド (.) を指定し、千の位の区切り記号は指定しません。localeconv(3C)、printf(3C)、strtod(3C) がこの環境変数を使用します。
日付と時刻の書式を指定します。このカテゴリにあてはまる情報は、localedef() で指定されるデータベース内に格納されています。デフォルト値の C ロケールは、アメリカ合衆国の日付と時刻の書式に対応しています。多くのコマンドおよび関数がこの環境変数を使用します。例: at(1)、calendar(1)、date(1)、strftime(3C)、getdate(3C) などです。
stderr にメッセージを表示するとき、fmtmsg がどの標準書式メッセージコンポーネントを使用するかを制御します (fmtmsg(1) および fmtmsg(3C) を参照)。
コロンで区切られたネットワーク識別子のリストです。ネットワーク識別子とは、システムの「ネットワーク選択」コンポーネントが、アプリケーション固有のデフォルトのネットワーク検索パスを提供するために 使用する文字列です。ネットワーク識別子は、NULL 以外の文字からなり、長さは 1 以上である必要があります。最大長は制限されていません。通常は、システム管理者が ネットワーク識別子を選択します。ネットワーク識別子は、/etc/netconfig ファイルのすべての記述項の最初のフィールドでもあります。したがって NETPATH は、/etc/netconfig ファイルへのリンクおよびそのファイルのネットワーク記述項に入っているネットワークに関する情報を提供します。/etc/netconfig は、システム管理者によって維持されます。getnetpath(3NSL) で説明したライブラリルーチンが、NETPATH 環境変数にアクセスします。
メッセージカタログを見つけるために catopen(3C) と gettext(3C) が使用する、一連のテンプレートを指定します。各テンプレートは、オプションの接頭辞、1 つまたは複数の置換フィールド、ファイル名、およびオプションの接尾辞からなります。例:
NLSPATH="/system/nlslib/%N.cat"
この例では、catopen() がすべてのメッセージカタログをディレクトリ /system/nlslib から見つける必要があることを定義します。このディレクトリのカタログ名は、catopen( ) に指定された name パラメータの %N に接尾辞の .cat がついています。
置換フィールドは、後ろに単一文字のキーワードがついた % 記号からなります。現在定義されているキーワードを以下に示します。
catopen() に指定された name パラメータの値
LANG または LC_MESSAGES の値
LANG または LC_MESSAGES の言語要素
LANG または LC_MESSAGES の地域要素
LANG または LC_MESSAGES のコードセット要素
単一の % 文字
現在定義されていない値を指定した場合は、空の文字列に置換されます。分離文字の下線文字 (_) およびピリオド (.) は、%t および %c の各置換フィールドには入っていません。
NLSPATH で定義されるテンプレートは、コロン (:) で区切られます。先頭のコロンまたは隣接する 2 つのコロン (::) は、%N と同等の意味です。例:
NLSPATH=":%N.cat:/nlslib/%L/%N.cat"
この例では、要求されたメッセージカタログを name、name.cat、および /nlslib/$LANG/name.cat から見つけるよう catopen() に指示しています。gettext() の場合、%N には自動的に messages にマップされます。
NLSPATH が設定されていないか NULL に設定されている場合、catopen() と gettext() は setlocale(3C) を呼び出します。setlocale3C は LANG と LC_* 変数を調べてメッセージカタログの場所を探します。
Solaris における拡張された %L の解釈には、gettext(1)、gettext(3C)、catopen(3C)、setlocale(3C)、および locale_alias(5) で説明されているように、受け入れられたロケール名別名のサポートが含まれます。
通常、NLSPATH はシステム全体 (/etc/profile 中) に設定されるので、プログラムもユーザーもメッセージカタログに関連付けられた場所や命名規約を意識する必要はありません。
sh(1)、time(1)、nice(1)、nohup(1) などのユーティリティが、不完全なパス名しかわからないファイルを探すときに使用する一連のディレクトリ接頭辞です。複数の接頭辞はコロン (:) で区切られます。login(1) は PATH=/usr/bin を設定します。詳細は、sh(1) を参照してください。
重大度レベルを定義し、文字列をその重大度レベルと対応させ、標準書式エラーメッセージで出力します。addseverity(3C)、fmtmsg(1)、および fmtmsg(3C) を参照してください。
出力を行う端末の種類です。この情報は vi(1) などのコマンドによって使用され、その端末の特殊な機能が利用できます。
タイムゾーンの情報です。この環境変数の内容は、ctime(3C)、localtime(3C)、strftime(3C)、mktime(3C) の各関数がデフォルトのタイムゾーンを変更するのに使用します。TZ の値の形式は、次の 2 つのうちのどちらかです (見やすくするために、スペースを挿入しています)。
:characters
または
std offset dst offset, rule
TZ が最初の形式である場合 (つまり、最初の文字がコロン (: ) である場合)、あるいは、TZ が 2 番目の形式でない場合、TZ は、(もしあれば) 先頭のコロンを無視して、/usr/share/lib/zoneinfo/ に関連するタイムゾーンデータベースファイルへのパスを示します。
そうでない場合、つまり、TZ が 2 番目の形式である場合、TZ は次のように展開されます。
stdoffset[dst[offset][,start[/time],end[/time]]]
標準のタイムゾーン (std) または代替のタイムゾーン (dst、サマータイムなど) の名前を指定します。名前の長さは 3 バイト以上 {TZNAME_MAX} バイト以下です。std だけが必須です。dst を省略した場合、このタイムゾーンに代替の時刻は表示されません。これらのフィールドは、それぞれ次の 2 つの形式、つまり引用付きと引用なしのどちらかで指定できます。
引用付き形式の場合、最初の文字は小なり記号 (<) で、最後の文字が大なり記号 (>) です。これら引用記号の間にある文字はすべて、現在のロケールにおける移植可能な文字セットの英数字文字、プラス記号 (+)、またはマイナス記号 (-) です。この場合、std と dst フィールドは引用記号を含みません。
引用なし形式の場合、std と dst フィールド内のすべての文字は、現在のロケールにおける移植可能な文字セットの英数字文字です。
どちらかのフィールドが 3 バイトより小さい場合 (dst を省略した場合を除く)、{TZNAME_MAX} バイトより大きい場合、あるいは、前述の文字以外の文字を使用した場合、これらのフィールドの解釈方法は定義されていません。
協定世界時に合わせるために、ローカル時間に追加すべき値を示します。offset の形式は以下のとおりです。
hh[:mm[:ss]]
分 (mm) および秒 (ss) はオプションです。時間 (hh) は必須で、単一の数字で指定することもできます。std の後では必ず offset を指定しなければなりません。dst の後に offset を指定しないと、サマータイムは標準時間の 1 時間先と見なされます。1 つまたは複数の数字による指定が可能です。この値はつねに 10 進数として解釈されます。時間は 0 と 24 の間の値で、分 (および秒) を指定する場合は 0 と 59 の間の値で指定する必要があります。この範囲外の値を指定した場合の動作は予測できません。- を値の前に付けると、タイムゾーンはグリニッジ子午線の東です。それ以外の場合は、グリニッジ子午線の西になります (オプションの + 記号で示すこともできます)。
サマータイムに切り替える日時と、サマータイムから元に戻る日時を示します。start/time は、標準時間からサマータイムに切り替える日時を示し、end/time は、標準時間に戻る日時を示します。各 time フィールドは、変更を行う時間 (現在のローカル時間) を示します。
start および end は、以下のいずれかの形式をとります。
ユリウス日 n (1 ≤ n ≤ 365)。うるう年は考えません。つまり毎年 2 月 28 日は 59 で、3 月 1 日は 60 となります。この書式では 2 月 29 日を扱えません。
0 から始まるユリウス日 n (1 ≤ n ≤ 365)。2 月 29 日を扱えるように、うるう年を考慮した書式です。
m 月 (1 ≤ m ≤ 12) n 週 (1 ≤ n ≤ 5) の d 番目の曜日 (0 ≤ d ≤ 6)。週 5 は、「m 月の最後の d 番目の曜日」になります (最後の d 番目の曜日は、月の第 4 週または第 5 週に来ます)。週 1 は、その月の最初の d 番目の曜日が来る週を意味します。曜日ゼロは日曜日です。
これらのオプションのフィールドがない場合は、システム固有のデフォルト値を使用して start および end を指定します。
time は offset と同じ書式を用います。ただし、time では先行符号 (– または +) を付けることはできません。time を指定しない場合、デフォルト値は 02:00:00 です。
cat(1), date(1), ed(1), fmtmsg(1), localedef(1), login(1), ls(1), mkmsgs(1), nice(1), nohup(1), sh(1), sort(1), time(1), vi(1), exec(2), addseverity(3C), catopen(3C), ctime(3C), ctype(3C), fmtmsg(3C), getdate(3C), getnetpath(3NSL), gettext(3C), gettxt(3C), localeconv(3C), mblen(3C), mktime(3C), printf(3C), setlocale(3C), strcoll(3C), strftime(3C), strtod(3C), strxfrm(3C), TIMEZONE(4), netconfig(4), passwd(4), profile(4), locale_alias(5)