other versions
other sections
ENVIRON(7) | Linux Programmer's Manual | ENVIRON(7) |
名前¶
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 起源のプログラムなどによって使用される)。
- 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
- テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。
バグ¶
これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが IFS や LD_LIBRARY_PATH に異常な値を与えたことによって、 これまで多くのシステムコマンドがだまされて、 システムをひどい目にあわせてきた。 名前空間が汚染される危険性も存在する。 make や autoconf のようなプログラムでは、デフォルトのユーティリティを 環境にある似たような名前の変数で上書きすることができる (通常はすべて大文字の変数を用いる)。 すなわち、利用したい 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(7)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2014-01-18 | Linux |