Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all bug

名前

       environ - ユーザ環境

書式

       extern char **environ;

説明

       変数 environ は「環境 (environment)」と呼ばれる文字列へのポインタの配列である。 この配列の
       最後のポインタの値は NULL である。 (この変数はユーザープログラムで宣言しなければならない。
       ただし  libc4  や libc5 のヘッダーファイルなら <unistd.h> で宣言されているし、これが glibc
       由来のものでも _GNU_SOURCE が define されていれば宣言済みとなる)。 この文字列配列は、 プロ
       セスを起動する 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  な
              ど) によって上書きされることもある。 locale(5)  を見よ。

       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,  などの変数。ロケールの扱いに影響す
       る。 locale(5)  を見よ。

       TMPDIRtmpnam(3)   などのルーチンによって作成されるファイル名に前置されるパスに影響す
       る。また sort(1) の一時ディレクトリに用いられたり、他のプログラムからも利用される。

       LD_LIBRARY_PATH, LD_PRELOAD などの LD_* 変数はダイナミックローダ・リンカの動作に影響する。

       POSIXLY_CORRECT が指定されると、ある種のプログラムやライブラリルーチンは POSIX  の規定に従
       うようになる。

       malloc(3)  の動作は MALLOC_* 変数によって影響される。

       HOSTALIAS 変数は、 gethostbyname(3)  が用いるエイリアスが書かれているファイル名を与える。

       TZTZDIRtzset(3)   および、この関数を使う  ctime(3),  localtime(3),  mktime(3),
       strftime(3)  といった関数で用いられるタイムゾーンの情報を与える。  tzselect(8)  も参照のこ
       と。

       TERMCAP は、現在の端末情報の取得先 (あるいはそのような情報が書かれているファイル名) を与え
       る。

       COLUMNSLINES アプリケーションにウインドウのサイズを伝える。 実際のサイズとは違う値を与
       えることもできる。

       PRINTER または LPDEST 用いたいプリンタを指定する。 lpr(1)  を参照のこと。

       などなど...

バグ

       これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが IFSLD_LIBRARY_PATH
       に異常な値を与えたことによって、 これまで多くのシステムコマンドがだまされて、 システムをひ
       どい目にあわせてきた。

       名前空間が汚染される危険性も存在する。 makeautoconf のようなプログラムでは、デフォルト
       のユーティリティを 環境にある似たような名前の変数で上書きすることができる  (通常はすべて大
       文字の変数を用いる)。  すなわち、利用したい  C  コンパイラは  CC  で選択できる。また同様に
       MAKE, AR, AS, FC, LD, LEX, RM, YACC なども用いることができる。  ところが一方では、このよう
       な変数を   (パス名ではなく)   プログラムに対するオプションとして扱うような流儀も存在してき
       た。 例えば MORE, LESS, GZIP などがそうである。 このような利用法は間違っていると考えるべき
       で、  新しいプログラムでは避けるべきである。 gzip の作者たちは、オプションを与える環境変数
       を GZIP_OPT に改名することを考えるほうがよい。

関連項目

       bash(1), csh(1), login(1), sh(1), tcsh(1),  execve(2),  clearenv(3),  exec(3),  getenv(3),
       putenv(3), setenv(3), unsetenv(3), locale(5)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。