NAME

setenv - 환경 변수 바꾸거나 추가하기

SYNOPSIS

#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 <= 2.19: */ _BSD_SOURCE

DESCRIPTION

setenv() 함수는 환경에 name이 존재하지 않으면 변수 namevalue 값으로 추가한다. 환경에 name이 이미 존재하는 경우에는 overwrite가 0이 아니면 그 값을 value로 바꾼다. overwrite가 0이면 name의 값을 바꾸지 않는다. (그리고 setenv()는 성공 상태를 반환한다.) 이 함수는 (putenv(3)와 반대로) namevalue가 가리키는 문자열의 복사본을 만든다.

unsetenv() 함수는 환경에서 변수 name을 삭제한다. 환경에 name이 존재하지 않는 경우에는 함수가 성공하고 환경이 안 바뀐다.

RETURN VALUE

setenv()unsetenv() 함수는 성공 시 0을 반환한다. 오류 시 -1을 반환하며 오류를 나타내도록 errno를 설정한다.

ERRORS

EINVAL
name이 NULL이거나, 길이 0인 문자열을 가리키고 있거나, '=' 문자를 담고 있다.
ENOMEM
환경에 새 변수를 추가하기 위한 메모리가 충분치 않음.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
setenv(), unsetenv() 스레드 안전성 MT-Unsafe const:env

CONFORMING TO

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

NOTES

POSIX.1에서는 setenv()unsetenv()가 재진입 가능이기를 요구하지 않는다.

glibc 2.2.2 전에선 unsetenv()의 원형이 void를 반환하는 것이었다. 이후 버전들에서는 SYNOPSIS에 나와 있는 POSIX.1 준수 원형을 따른다.

BUGS

POSIX.1에서는 name에 '=' 문자가 있으면 setenv()EINVAL 오류로 실패해야 한다고 명세한다. 하지만 glibc 버전 2.3.4 전에선 name에 '=' 부호를 허용했다.

SEE ALSO

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


2021-03-22