Manpages

名 前

setenv − 環 境 変 数 を 変 更 ま た は 追 加 す る

書 式

#include <stdlib.h>

int setenv(const char *name, const char *value, int overwrite);

int unsetenv(const char *name);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

setenv(), unsetenv():

_BSD_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600

説 明

setenv() 関 数 は 、 name が 存 在 し な い 場 合 環 境 変 数 name に 値 value を 設 定 し 、 環 境 に 追 加 す る 。 name が 環 境 に 存 在 す る 場 合 、 overwrite が 0 以 外 な ら ば そ の 値 を value に 変 更 し 、 overwrite が 0 な ら ば name の 値 を 変 更 し な い (setenv() は 成 功 の ス テ ー タ ス を 返 す )。 こ の 関 数 は 、 (putenv(3) と 違 い ) namevalue に よ り 参 照 さ れ る 文 字 列 の コ ピ ー を 行 う 。

unsetenv() 関 数 は 、 変 数 name を 環 境 か ら 削 除 す る 。 name が 環 境 に な い 場 合 、 こ の 関 数 は 成 功 し 、 環 境 は 変 更 さ れ な い 。

返 り 値

setenv() 関 数 は 、 成 功 す る と 0 を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 が セ ッ ト さ れ る 。

unsetenv() 関 数 は 、 成 功 す る と 0 を 返 す 。 エ ラ ー の 場 合 は −1 を 返 し 、 errno を 設 定 し て エ ラ ー の 原 因 を 示 す 。

エ ラ ー

EINVAL

name が NULL で あ る か 、 長 さ が 0 の 文 字 列 を 指 し て い る か 、 '=' 文 字 が 含 ま れ て い る 。

ENOMEM

環 境 に 新 し い 変 数 を 追 加 す る の に 十 分 な メ モ リ ー が な い 。

準 拠

4.3BSD, POSIX.1−2001.

注 意

POSIX.1−2001 は 、 setenv() や unsetenv() が リ エ ン ト ラ ン ト (再 入 可 能 ) で あ る こ と を 要 求 し て い な い 。

glibc 2.2.2 以 前 で は 、 unsetenv() は 返 り 値 が void の プ ロ ト タ イ プ で あ っ た 。 も っ と 最 近 の glibc 版 は 、 「 書 式 」 セ ク シ ョ ン で 示 し て い る よ う に POSIX.1−2001 互 換 の プ ロ ト タ イ プ で あ る 。

バ グ

POSIX.1−2001 で は 「 name に '=' 文 字 が 含 ま れ る 場 合 、 setenv() は エ ラ ー EINVAL で 失 敗 す べ き で あ る 」 と 述 べ ら れ て い る 。 し か し 2.3.4 よ り 前 の バ ー ジ ョ ン の glibc で は 、 name に '=' 文 字 が 含 ま れ る の を 許 し て い る 。

関 連 項 目

clearenv(3), getenv(3), putenv(3), environ(7)

こ の 文 書 に つ い て

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