Provided by: manpages-ja_0.5.0.0.20161015+dfsg-1_all 

名前
environ - ユーザー環境
書式
extern char **environ;
説明
変数 environ は「環境 (environment)」と呼ばれる文字列へのポインターの配列である。 この配列の最後のポイン
ターの値は NULL である。 (この変数はユーザープログラムで宣言しなければならないが、 機能検査マクロ
_GNU_SOURCE が定義されていればヘッダーファイル <unistd.h> で宣言される)。 この文字列配列は、 プロセスを起
動する exec(3) によって、その起動されたプロセスで利用できるようになる。
通例では、 environ の文字列は "name=value" という書式をとる。 よく用いられる例を以下に示す。
USER ユーザーのログイン名 (BSD 起源のプログラムなどによって使用される)。
LOGNAME
ユーザーのログイン名(System V 起源のプログラムなどによって使用される)。
HOME ユーザーのログインディレクトリ。 login(1) がパスワードファイル passwd(5) から取得して設定する。
LANG ロケールの各カテゴリーで使用されるロケールの名前。LC_ALL や、 より狭い範囲を対象とする環境変数
(LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME など) によって上書きされるこ
ともある (LC_* 環境変数のさらなる詳細は locale(7) 参照)。
PATH sh(1) や他のプログラムが、フルパスで与えられなかった実行ファイルを検索するとき、 ファイル名に前置
されるディレクトリの配列。 各ディレクトリは ':' によって区切られる。 (同じようなものに、 シェルが
ディレクトリ変更コマンドの変更先を探すために用いる CDPATH や、 man(1) がマニュアルページの検索に
用いる MANPATH などがある。)
PWD 現在のワーキングディレクトリ。いくつかのシェルが設定する。
SHELL ユーザーのログインシェルのパス名。
TERM 端末の種類。出力はこれにあわせて用意される。
PAGER テキストファイルを表示するユーテリティ。ユーザーが好みのものを設定する。
EDITOR/VISUAL
テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。
環境に名前を追加する場合には、 sh(1) では export コマンドと "name=value" を使用する。 csh(1) では setenv
コマンドを使用する。 exec(3) の引数としても環境を設定することができる。 C プログラムからは、 getenv(3),
putenv(3), setenv(3), unsetenv(3) などの関数を用いて環境を扱うことができる。
プログラムやライブラリルーチンの多くは、それぞれ適当な環境変数の存在 や値によって、動作に影響を受けること
がある。以下、適宜挙げてみよう。
LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES, などの変数は、ロケールの扱いに影響する。
catopen(3), gettext(3), locale(5) を参照。
TMPDIR は、 tmpnam(3) などのルーチンによって作成されるファイル名や sort(1) や他のプログラムが使用する一時
ディレクトリに前置されるパスに影響する。
LD_LIBRARY_PATH, LD_PRELOAD などの LD_* 変数はダイナミックローダーリンカーの動作に影響する。
POSIXLY_CORRECT が指定されると、ある種のプログラムやライブラリルーチンは POSIX の規定に従うようになる。
malloc(3) の動作は MALLOC_* 変数によって影響される。
HOSTALIAS 変数は、 gethostbyname(3) が用いるエイリアスが書かれているファイル名を与える。
TZ と TZDIR は tzset(3) および、この関数を使う ctime(3), localtime(3), mktime(3), strftime(3) といった
関数で用いられるタイムゾーンの情報を与える。 tzselect(8) も参照のこと。
TERMCAP は、現在の端末情報の取得先 (あるいはそのような情報が書かれているファイル名) を与える。
COLUMNS と LINES アプリケーションにウインドウのサイズを伝える。 実際のサイズとは違う値を与えることもでき
る。
PRINTER または LPDEST 用いたいプリンタを指定する。 lpr(1) を参照のこと。
などなど...
バグ
これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが IFS や LD_LIBRARY_PATH に異常な値を与
えたことによって、 これまで多くのシステムコマンドがだまされて、 システムをひどい目にあわせてきた。
名前空間が汚染される危険性も存在する。 make や autoconf のようなプログラムでは、デフォルトのユーティリ
ティを 環境にある似たような名前の変数で上書きすることができる (通常はすべて大文字の変数を用いる)。 すなわ
ち、利用したい C コンパイラは CC で選択できる。また同様に MAKE, AR, AS, FC, LD, LEX, RM, YACC なども用い
ることができる。 ところが一方では、このような変数を (パス名ではなく) プログラムに対するオプションとして
扱うような流儀も存在してきた。 例えば MORE, LESS, GZIP などがそうである。 このような利用法は間違っている
と考えるべきで、 新しいプログラムでは避けるべきである。 gzip の作者たちは、オプションを与える環境変数を
GZIP_OPT に改名することを考えるほうがよい。
関連項目
env(1), bash(1), csh(1), login(1), printenv(1), sh(1), tcsh(1), execve(2), clearenv(3), exec(3),
getenv(3), putenv(3), setenv(3), unsetenv(3), locale(7), ld.so(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告
に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
Linux 2014-08-19 ENVIRON(7)