名 前
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/ に 書 か れ て い る 。