OSDN Git Service

(split) LDP: Update draft pages
[linuxjm/LDP_man-pages.git] / draft / man7 / environ.7
1 .\" Copyright (c) 1993 Michael Haardt (michael@moria.de),
2 .\"   Fri Apr  2 11:32:09 MET DST 1993
3 .\" and Andries Brouwer (aeb@cwi.nl), Fri Feb 14 21:47:50 1997.
4 .\"
5 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
6 .\" This is free documentation; you can redistribute it and/or
7 .\" modify it under the terms of the GNU General Public License as
8 .\" published by the Free Software Foundation; either version 2 of
9 .\" the License, or (at your option) any later version.
10 .\"
11 .\" The GNU General Public License's references to "object code"
12 .\" and "executables" are to be interpreted as the output of any
13 .\" document formatting or typesetting system, including
14 .\" intermediate and printed output.
15 .\"
16 .\" This manual is distributed in the hope that it will be useful,
17 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
18 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 .\" GNU General Public License for more details.
20 .\"
21 .\" You should have received a copy of the GNU General Public
22 .\" License along with this manual; if not, see
23 .\" <http://www.gnu.org/licenses/>.
24 .\" %%%LICENSE_END
25 .\"
26 .\" Modified Sun Jul 25 10:45:30 1993 by Rik Faith (faith@cs.unc.edu)
27 .\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer (aeb@cwi.nl)
28 .\" Modified Mon Oct 21 17:47:19 1996 by Eric S. Raymond (esr@thyrsus.com)
29 .\" Modified Wed Aug 27 20:28:58 1997 by Nicolás Lichtmaier (nick@debian.org)
30 .\" Modified Mon Sep 21 00:00:26 1998 by Andries Brouwer (aeb@cwi.nl)
31 .\" Modified Wed Jan 24 06:37:24 2001 by Eric S. Raymond (esr@thyrsus.com)
32 .\" Modified Thu Dec 13 23:53:27 2001 by Martin Schulze <joey@infodrom.org>
33 .\"
34 .\"*******************************************************************
35 .\"
36 .\" This file was generated with po4a. Translate the source file.
37 .\"
38 .\"*******************************************************************
39 .TH ENVIRON 7 2009\-07\-25 Linux "Linux Programmer's Manual"
40 .SH 名前
41 environ \- ユーザ環境
42 .SH 書式
43 .nf
44 \fBextern char **\fP\fIenviron\fP\fB;\fP
45 .br
46 .fi
47 .SH 説明
48 変数 \fIenviron\fP は「環境 (environment)」と呼ばれる文字列へのポインタの配列である。 この配列の最後のポインタの値は NULL
49 である。 (この変数はユーザープログラムで宣言しなければならない。 ただし libc4 や libc5 のヘッダーファイルなら
50 \fI<unistd.h>\fP で宣言されているし、これが glibc 由来のものでも \fB_GNU_SOURCE\fP が define
51 されていれば宣言済みとなる)。 この文字列配列は、 プロセスを起動する \fBexec\fP(3)  によって、その起動されたプロセスで利用できるようになる。
52
53 通例では、 \fIenviron\fP の文字列は "\fIname\fP\fB=\fP\fIvalue\fP" という書式をとる。 よく用いられる例を以下に示す。
54 .TP 
55 \fBUSER\fP
56 ユーザのログイン名 (BSD 起源のプログラムなどによって使用される)。
57 .TP 
58 \fBLOGNAME\fP
59 ユーザのログイン名(System V 起源のプログラムなどによって使用される)。
60 .TP 
61 \fBHOME\fP
62 ユーザのログインディレクトリ。 \fBlogin\fP(1)  がパスワードファイル \fBpasswd\fP(5)  から取得して設定する。
63 .TP 
64 \fBLANG\fP
65 ロケールの各カテゴリで使用されるロケールの名前。\fBLC_ALL\fP や、 より狭い範囲を対象とする環境変数 (\fBLC_COLLATE\fP,
66 \fBLC_CTYPE\fP, \fBLC_MESSAGES\fP, \fBLC_MONETARY\fP, \fBLC_NUMERIC\fP, \fBLC_TIME\fP など)
67 によって上書きされることもある。 \fBlocale\fP(5)  を見よ。
68 .TP 
69 \fBPATH\fP
70 \fBsh\fP(1)  や他のプログラムが、フルパスで与えられなかった実行ファイルを検索するとき、 ファイル名に前置されるディレクトリの配列。
71 各ディレクトリは \(aq\fB:\fP\(aq によって区切られる。 (同じようなものに、 シェルがディレクトリ変更コマンドの変更先を探すために用いる
72 \fBCDPATH\fP や、 \fBman\fP(1)  がマニュアルページの検索に用いる \fBMANPATH\fP などがある。)
73 .TP 
74 \fBPWD\fP
75 現在のワーキングディレクトリ。いくつかのシェルが設定する。
76 .TP 
77 \fBSHELL\fP
78 ユーザーのログインシェルのパス名。
79 .TP 
80 \fBTERM\fP
81 端末の種類。出力はこれにあわせて用意される。
82 .TP 
83 \fBPAGER\fP
84 テキストファイルを表示するユーテリティ。ユーザーが好みのものを設定する。
85 .TP 
86 \fBEDITOR\fP/\fBVISUAL\fP
87 .\" .TP
88 .\" .B BROWSER
89 .\" The user's preferred utility to browse URLs. Sequence of colon-separated
90 .\" browser commands. See http://www.catb.org/~esr/BROWSER/ .
91 テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。
92 .PP
93 環境に名前を追加する場合には、 \fBsh\fP(1)  では \fIexport\fP コマンドと "name=value" を使用する。 \fBcsh\fP(1)
94 では \fIsetenv\fP コマンドを使用する。 \fBexec\fP(3)  の引数としても環境を設定することができる。 C プログラムからは、
95 \fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3), \fBunsetenv\fP(3)
96 などの関数を用いて環境を扱うことができる。
97
98 プログラムやライブラリルーチンの多くは、それぞれ適当な環境変数の存在 や値によって、動作に影響を受けることがある。以下、適宜挙げてみよう。
99 .LP
100 \fBLANG\fP, \fBLANGUAGE\fP, \fBNLSPATH\fP, \fBLOCPATH\fP, \fBLC_ALL\fP, \fBLC_MESSAGES\fP,
101 などの変数。ロケールの扱いに影響する。 \fBlocale\fP(5)  を見よ。
102 .LP
103 \fBTMPDIR\fP は \fBtmpnam\fP(3)  などのルーチンによって作成されるファイル名に前置されるパスに影響する。また \fBsort\fP(1)
104 の一時ディレクトリに用いられたり、他のプログラムからも利用される。
105 .LP
106 \fBLD_LIBRARY_PATH\fP, \fBLD_PRELOAD\fP などの LD_* 変数はダイナミックローダ・リンカの動作に影響する。
107 .LP
108 \fBPOSIXLY_CORRECT\fP が指定されると、ある種のプログラムやライブラリルーチンは POSIX の規定に従うようになる。
109 .LP
110 \fBmalloc\fP(3)  の動作は \fBMALLOC_*\fP 変数によって影響される。
111 .LP
112 \fBHOSTALIAS\fP 変数は、 \fBgethostbyname\fP(3)  が用いるエイリアスが書かれているファイル名を与える。
113 .LP
114 \fBTZ\fP と \fBTZDIR\fP は \fBtzset\fP(3)  および、この関数を使う \fBctime\fP(3), \fBlocaltime\fP(3),
115 \fBmktime\fP(3), \fBstrftime\fP(3)  といった関数で用いられるタイムゾーンの情報を与える。 \fBtzselect\fP(8)
116 も参照のこと。
117 .LP
118 \fBTERMCAP\fP は、現在の端末情報の取得先 (あるいはそのような情報が書かれているファイル名) を与える。
119 .LP
120 \fBCOLUMNS\fP と \fBLINES\fP アプリケーションにウインドウのサイズを伝える。 実際のサイズとは違う値を与えることもできる。
121 .LP
122 \fBPRINTER\fP または \fBLPDEST\fP 用いたいプリンタを指定する。 \fBlpr\fP(1)  を参照のこと。
123 .LP
124 などなど...
125 .SH バグ
126 これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが \fBIFS\fP や \fBLD_LIBRARY_PATH\fP
127 に異常な値を与えたことによって、 これまで多くのシステムコマンドがだまされて、 システムをひどい目にあわせてきた。
128
129 名前空間が汚染される危険性も存在する。 \fImake\fP や \fIautoconf\fP のようなプログラムでは、デフォルトのユーティリティを
130 環境にある似たような名前の変数で上書きすることができる (通常はすべて大文字の変数を用いる)。 すなわち、利用したい C コンパイラは \fBCC\fP
131 で選択できる。また同様に \fBMAKE\fP, \fBAR\fP, \fBAS\fP, \fBFC\fP, \fBLD\fP, \fBLEX\fP, \fBRM\fP, \fBYACC\fP
132 なども用いることができる。 ところが一方では、このような変数を (パス名ではなく)  プログラムに対するオプションとして扱うような流儀も存在してきた。
133 例えば \fBMORE\fP, \fBLESS\fP, \fBGZIP\fP などがそうである。 このような利用法は間違っていると考えるべきで、
134 新しいプログラムでは避けるべきである。 \fIgzip\fP の作者たちは、オプションを与える環境変数を \fBGZIP_OPT\fP
135 に改名することを考えるほうがよい。
136 .SH 関連項目
137 \fBbash\fP(1), \fBcsh\fP(1), \fBlogin\fP(1), \fBsh\fP(1), \fBtcsh\fP(1), \fBexecve\fP(2),
138 \fBclearenv\fP(3), \fBexec\fP(3), \fBgetenv\fP(3), \fBputenv\fP(3), \fBsetenv\fP(3),
139 \fBunsetenv\fP(3), \fBlocale\fP(5)
140 .SH この文書について
141 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
142 である。プロジェクトの説明とバグ報告に関する情報は
143 http://www.kernel.org/doc/man\-pages/ に書かれている。