SETENV

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home Page
 

名前

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():

_POSIX_C_SOURCE >= 200112L
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 

説明

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

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

返り値

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

エラー

EINVAL
name が NULL であるか、長さが 0 の文字列を指しているか、 '=' 文字が含まれている。
ENOMEM
環境に新しい変数を追加するのに十分なメモリーがない。
 

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
setenv(), unsetenv() Thread safety MT-Unsafe const:env
 

準拠

POSIX.1-2001, POSIX.1-2008, 4.3BSD.  

注意

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

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

バグ

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

関連項目

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

この文書について

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

関連キーワード

環境   変数   成功   setenv   プロトタイプ   stdlib   unsetenv   検査   マクロ   要件   macros   versions   ステータス   コピー   原因   メモリー   用語   allbox   インターフェース   属性   Thread   safety   再入   要求   返り値

Linux マニュアル 一覧

関連するコマンド・関数

unsetenv.3   env.1   putenv.3   printenv.1   grub-editenv.1   variables.5
 

Index

名前
書式
説明
返り値
エラー
属性
準拠
注意
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:14 GMT, October 11, 2026