EN JA
GETENV(3)
GETENV(3) FreeBSD Library Functions Manual GETENV(3)

名称

getenv, putenv, setenv, unsetenv環境変数関数

ライブラリ

Standard C Library (libc, -lc)

書式

#include < stdlib.h>

char *
getenv( const char *name);

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

int
putenv( char *string);

int
unsetenv( const char *name);

解説

これらの関数は、ホストの environment list から環境変数をセット、アンセット、取り出しを行います。

getenv() 関数は、環境変数 name の現在の値を取得します。アプリケーションは getenv() 関数によって指された文字列を変更するべきではありません。

setenv() 関数は、環境変数 name を現在の環境リストに挿入または再設定します。変数 name がリストにない場合は、与えられた value に設定されて挿入されます。変数が存在する場合は引数 overwrite が検査され、 overwrite が 0 ならば変数は再設定されず、そうでなければ、与えられた value に再設定されます。

putenv() 関数は、形式 ``name=value'' の引数を取り、現在の環境変数にそれを直接入れるので、引数の変更は、環境変数が変更されます。変数 name がリスト中に存在していないなら、それは与えられた value で挿入されます。変数 name が存在しているなら、それは与えられた value にリセットされます。

unsetenv() 関数は、リストから name で示される変数名のインスタンスをすべて削除します。

内部の使用法のために環境のコピーが行われている間に不正 (例えば、値のない名前) が検出されなら、 setenv(), unsetenv() と putenv() は、問題に関して stderr に警告を出力し、不正なエントリを落として、エラーなしでタスクを終了します。

戻り値

getenv() 関数は、 ヌル文字 で終了する文字列として環境変数の値を返します。環境変数 name が現在の環境になければ、 NULL が返されます。


The setenv(), putenv(), and unsetenv() functions return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

[ EINVAL]
関数 getenv(), setenv() または unsetenv() は、 nameNULL ポインタ、空の文字列を指す、または“ =”文字を含む文字列を指しているので、失敗しました。

関数 putenv() は、 stringNULL ポインタ、 string に“ =”文字がない、または“ =”が string の最初の文字であるので、失敗しました。これは、 POSIX 仕様に従いません。

[ ENOMEM]
関数 setenv(), unsetenv() または putenv() は、環境変数にメモリを割り付けることができなかったために、失敗しました。

関連項目

csh(1), sh(1), execve(2), environ(7)

規格

getenv() 関数は、 ISO/IEC 9899:1990 (“ISO C90”) に適合しています。 setenv(), putenv() と unsetenv() 関数は、 IEEE Std 1003.1-2001 (“POSIX.1”) に適合しています。

歴史

関数 setenv() と unsetenv() は、 Version 7 AT&T UNIX で登場しました。 putenv() 関数は、 4.3BSD-Reno で登場しました。

FreeBSD 7.0 まで、 putenv() は、 string のコピーを行い、 setenv() を使用して、それを環境変数に挿入していました。これは、 POSIX 仕様に従うために ``name=value'' のペアのメモリの位置として、 string を使用するために、変更されました。

バグ

同じ name に前の値よりも大きいサイズの value を割り当てる setenv() への連続した呼び出しは、メモリリークをもたらします。この関数のための FreeBSD のセマンティック (動作) は、(すなわち、 value の内容がコピーされ、古い値がいつまでもアクセス可能のまま残される) このバグを回避できなくします。将来のバージョンで、このバグを修正するためにこの動作の保証の 1 つまたは両方を削除するかもしれません。
June 20, 2007 FreeBSD