OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / 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 .\" This is free documentation; you can redistribute it and/or
6 .\" modify it under the terms of the GNU General Public License as
7 .\" published by the Free Software Foundation; either version 2 of
8 .\" the License, or (at your option) any later version.
9 .\"
10 .\" The GNU General Public License's references to "object code"
11 .\" and "executables" are to be interpreted as the output of any
12 .\" document formatting or typesetting system, including
13 .\" intermediate and printed output.
14 .\"
15 .\" This manual is distributed in the hope that it will be useful,
16 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
17 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 .\" GNU General Public License for more details.
19 .\"
20 .\" You should have received a copy of the GNU General Public
21 .\" License along with this manual; if not, write to the Free
22 .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
23 .\" USA.
24 .\"
25 .\" Modified Sun Jul 25 10:45:30 1993 by Rik Faith (faith@cs.unc.edu)
26 .\" Modified Sun Jul 21 21:25:26 1996 by Andries Brouwer (aeb@cwi.nl)
27 .\" Modified Mon Oct 21 17:47:19 1996 by Eric S. Raymond (esr@thyrsus.com)
28 .\" Modified Wed Aug 27 20:28:58 1997 by Nicolas Lichtmaier (nick@debian.org)
29 .\" Modified Mon Sep 21 00:00:26 1998 by Andries Brouwer (aeb@cwi.nl)
30 .\" Modified Wed Jan 24 06:37:24 2001 by Eric S. Raymond (esr@thyrsus.com)
31 .\" Modified Thu Dec 13 23:53:27 2001 by Martin Schulze <joey@infodrom.org>
32 .\"
33 .\" nakano 注: Nicolas さんの a はオリジナルでは \'a だが,
34 .\" キャラクタを壊すので a に変更した.
35 .\"
36 .\" Japanese Version Copyright (c) 1997 KURODA Masaru all rights reserved.
37 .\" Translated May 27, 1997 by KURODA Masaru <kuro@st.rim.or.jp>
38 .\" Modified Sat 25 Jul 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
39 .\" Modified Sun 6 Dec 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
40 .\" Updated & Modified Sat Aug 21 1999
41 .\"       by NAKANO Takeo <nakano@apm.seikei.ac.jp>
42 .\" Updated & Modified Sat 18 Mar 2000 by NAKANO Takeo
43 .\" Updated Sat Dec 22 JST 2001 by Kentaro Shirakata <argrath@ub32.org>
44 .\" Updated Sat Mar 23 JST 2002 by Kentaro Shirakata <argrath@ub32.org>
45 .\" Updated 2010-04-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.24
46 .\"
47 .\"WORD:        environment             環境
48 .\"WORD:        environment variable    環境変数
49 .\"WORD:        shell variable          シェル変数
50 .\"WORD:        locale                  ロケール
51 .\"WORD:        locale category         ロケールカテゴリ
52 .\"
53 .TH ENVIRON 7 2009-07-25 "Linux" "Linux Programmer's Manual"
54 .SH 名前
55 environ \- ユーザ環境
56 .SH 書式
57 .nf
58 .BI "extern char **" environ ;
59 .br
60 .fi
61 .SH 説明
62 変数
63 .I environ
64 は「環境 (environment)」と呼ばれる文字列へのポインタの配列である。
65 この配列の最後のポインタの値は NULL である。
66 (この変数はユーザープログラムで宣言しなければならない。
67 ただし libc4 や libc5 のヘッダーファイルなら
68 .I <unistd.h>
69 で宣言されているし、これが glibc 由来のものでも
70 .B _GNU_SOURCE
71 が define されていれば宣言済みとなる)。
72 この文字列配列は、
73 プロセスを起動する
74 .BR exec (3)
75 によって、その起動されたプロセスで利用できるようになる。
76
77 通例では、
78 .I environ
79 の文字列は "\fIname\fP\fB=\fP\fIvalue\fP" という書式をとる。
80 よく用いられる例を以下に示す。
81 .TP
82 .B USER
83 ユーザのログイン名 (BSD 起源のプログラムなどによって使用される)。
84 .TP
85 .B LOGNAME
86 ユーザのログイン名(System V 起源のプログラムなどによって使用される)。
87 .TP
88 .B HOME
89 ユーザのログインディレクトリ。
90 .BR login (1)
91 がパスワードファイル
92 .BR passwd (5)
93 から取得して設定する。
94 .TP
95 .B LANG
96 ロケールの各カテゴリで使用されるロケールの名前。\fBLC_ALL\fP や、
97 より狭い範囲を対象とする環境変数
98 .RB ( LC_COLLATE ,
99 .BR LC_CTYPE ,
100 .BR LC_MESSAGES ,
101 .BR LC_MONETARY ,
102 .BR LC_NUMERIC ,
103 .B LC_TIME
104 など)
105 によって上書きされることもある。
106 .BR locale (5)
107 を見よ。
108 .TP
109 .B PATH
110 .BR sh (1)
111 や他のプログラムが、フルパスで与えられなかった実行ファイルを検索するとき、
112 ファイル名に前置されるディレクトリの配列。
113 各ディレクトリは \(aq\fB:\fP\(aq によって区切られる。
114 (同じようなものに、
115 シェルがディレクトリ変更コマンドの変更先を探すために用いる
116 \fBCDPATH\fP や、
117 .BR man (1)
118 がマニュアルページの検索に用いる \fBMANPATH\fP などがある。)
119 .TP
120 .B PWD
121 現在のワーキングディレクトリ。いくつかのシェルが設定する。
122 .TP
123 .B SHELL
124 ユーザーのログインシェルのパス名。
125 .TP
126 .B TERM
127 端末の種類。出力はこれにあわせて用意される。
128 .TP
129 .B PAGER
130 テキストファイルを表示するユーテリティ。ユーザーが好みのものを設定する。
131 .TP
132 .BR EDITOR / VISUAL
133 テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。
134 .\" .TP
135 .\" .B BROWSER
136 .\" URL の閲覧に用いるユーティリティ。ユーザーが好みのものを設定する。
137 .\" コロンで区切ってブラウザコマンドを並べる。
138 .\" http://www.catb.org/~esr/BROWSER/ を見よ。
139 .PP
140 環境に名前を追加する場合には、
141 .BR sh (1)
142 では \fIexport\fP コマンドと "name=value" を使用する。
143 .BR csh (1)
144 では \fIsetenv\fP コマンドを使用する。
145 .BR exec (3)
146 の引数としても環境を設定することができる。
147 C プログラムからは、
148 .BR getenv (3),
149 .BR putenv (3),
150 .BR setenv (3),
151 .BR unsetenv (3)
152 などの関数を用いて環境を扱うことができる。
153
154 プログラムやライブラリルーチンの多くは、それぞれ適当な環境変数の存在
155 や値によって、動作に影響を受けることがある。以下、適宜挙げてみよう。
156 .LP
157 .BR LANG ", " LANGUAGE ", " NLSPATH ", " LOCPATH ", "
158 .BR LC_ALL ", " LC_MESSAGES ", "
159 などの変数。ロケールの扱いに影響する。
160 .BR locale (5)
161 を見よ。
162 .LP
163 .B TMPDIR
164
165 .BR tmpnam (3)
166 などのルーチンによって作成されるファイル名に前置されるパスに影響する。また
167 .BR sort (1)
168 の一時ディレクトリに用いられたり、他のプログラムからも利用される。
169 .LP
170 .BR LD_LIBRARY_PATH ", " LD_PRELOAD
171 などの LD_* 変数はダイナミックローダ・リンカの動作に影響する。
172 .LP
173 .B POSIXLY_CORRECT
174 が指定されると、ある種のプログラムやライブラリルーチンは
175 POSIX の規定に従うようになる。
176 .LP
177 .BR malloc (3)
178 の動作は
179 .B MALLOC_*
180 変数によって影響される。
181 .LP
182 .B HOSTALIAS
183 変数は、
184 .BR gethostbyname (3)
185 が用いるエイリアスが書かれているファイル名を与える。
186 .LP
187 .BR TZ " と " TZDIR
188
189 .BR tzset (3)
190 および、この関数を使う
191 .BR ctime (3),
192 .BR localtime (3),
193 .BR mktime (3),
194 .BR strftime (3)
195 といった関数で用いられるタイムゾーンの情報を与える。
196 .BR tzselect (8)
197 も参照のこと。
198 .LP
199 .B TERMCAP
200 は、現在の端末情報の取得先
201 (あるいはそのような情報が書かれているファイル名) を与える。
202 .LP
203 .BR COLUMNS " と " LINES
204 アプリケーションにウインドウのサイズを伝える。
205 実際のサイズとは違う値を与えることもできる。
206 .LP
207 .BR PRINTER " または " LPDEST
208 用いたいプリンタを指定する。
209 .BR lpr (1)
210 を参照のこと。
211 .LP
212 などなど...
213 .SH バグ
214 これらの中には、明らかにセキュリティ上の危険が存在する。
215 ユーザーが
216 .BR IFS " や " LD_LIBRARY_PATH
217 に異常な値を与えたことによって、
218 これまで多くのシステムコマンドがだまされて、
219 システムをひどい目にあわせてきた。
220
221 名前空間が汚染される危険性も存在する。
222 .I make
223
224 .I autoconf
225 のようなプログラムでは、デフォルトのユーティリティを
226 環境にある似たような名前の変数で上書きすることができる
227 (通常はすべて大文字の変数を用いる)。
228 すなわち、利用したい C コンパイラは
229 .B CC
230 で選択できる。また同様に
231 .BR MAKE ,
232 .BR AR ,
233 .BR AS ,
234 .BR FC ,
235 .BR LD ,
236 .BR LEX ,
237 .BR RM ,
238 .B YACC
239 なども用いることができる。
240 ところが一方では、このような変数を
241 (パス名ではなく)
242 プログラムに対するオプションとして扱うような流儀も存在してきた。
243 例えば
244 .BR MORE ,
245 .BR LESS ,
246 .B GZIP
247 などがそうである。
248 このような利用法は間違っていると考えるべきで、
249 新しいプログラムでは避けるべきである。
250 .I gzip
251 の作者たちは、オプションを与える環境変数を
252 .B GZIP_OPT
253 に改名することを考えるほうがよい。
254 .SH 関連項目
255 .BR bash (1),
256 .BR csh (1),
257 .BR login (1),
258 .BR sh (1),
259 .BR tcsh (1),
260 .BR execve (2),
261 .BR clearenv (3),
262 .BR exec (3),
263 .BR getenv (3),
264 .BR putenv (3),
265 .BR setenv (3),
266 .BR unsetenv (3),
267 .BR locale (5)