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) によって、その起動されたプロセスで利用できるようになる。- 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) を見よ。
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 に異常な値を与えたことによって、これまで多くのシステムコマンドがだまされて、システムをひどい目にあわせてきた。関連項目
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.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2009-07-25 | Linux |