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

名前
environ - ユーザー環境
書式
extern char **environ;
説明
The variable environ points to an array of pointers to strings called the "environment". The last pointer in this array has the value NULL. (This variable must be declared in the user program, but is declared in the header file <unistd.h> if the _GNU_SOURCE feature test macro is defined.) This array of strings is made available to the process by the exec(3) call that started the process. When a child process is created via fork(2), it inherits a copy of its parent's environment. 通例では、 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 テキストファイルを編集するユーテリティ。ユーザーが好みのものを設定する。 Names may be placed in the shell's environment by the export command in sh(1), or by the setenv command if you use csh(1). The initial environment of the shell is populated in various ways, such as definitions from /etc/environment that are processed by pam_env(8) for all users at login time (on systems that employ pam(8)). In addition, various shell initialization scripts, such as the system-wide /etc/profile script and per-user initializations script may include commands that add variables to the shell's environment; see the manual page of your preferred shell for details. Bourne-style shells support the syntax NAME=value command to create an environment variable definition only in the scope of the process that executes command. Multiple variable definitions, separated by white space, may precede command. exec(3) の引数としても環境を設定することができる。 C プログラムからは、 getenv(3), putenv(3), setenv(3), unsetenv(3) などの関数を用いて環境を扱うことができる。 Note that the behavior of many programs and library routines is influenced by the presence or value of certain environment variables. Examples include the following: * LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES, などの変数は、ロケールの扱いに影響する。 catopen(3), gettext(3), locale(5) を参照。 * TMPDIR は、 tempnam(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) を参照のこと。
注意
The prctl(2) PR_SET_MM_ENV_START and PR_SET_MM_ENV_END operations can be used to control the location of the process's environment.
バグ
これらの中には、明らかにセキュリティ上の危険が存在する。 ユーザーが 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), env(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), pam_env(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告 に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。 Linux 2020-08-13 ENVIRON(7)