File: setenv.3

package info (click to toggle)
manpages 6.15-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 20,184 kB
  • sloc: sh: 575; python: 222; perl: 190; makefile: 29; lisp: 22
file content (138 lines) | stat: -rw-r--r-- 2,524 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
'\" t
.\" Copyright, the authors of the Linux man-pages project
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.TH setenv 3 2025-05-17 "Linux man-pages (unreleased)"
.SH NAME
setenv \- change or add an environment variable
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
.SH SYNOPSIS
.nf
.B #include <stdlib.h>
.P
.BI "int setenv(const char *" name ", const char *" value ", int " overwrite );
.BI "int unsetenv(const char *" name );
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
.BR setenv (),
.BR unsetenv ():
.nf
    _POSIX_C_SOURCE >= 200112L
        || /* glibc <= 2.19: */ _BSD_SOURCE
.fi
.SH DESCRIPTION
The
.BR setenv ()
function adds the variable
.I name
to the
environment with the value
.IR value ,
if
.I name
does not
already exist.
If
.I name
does exist in the environment, then
its value is changed to
.I value
if
.I overwrite
is nonzero;
if
.I overwrite
is zero, then the value of
.I name
is not changed (and
.BR setenv ()
returns a success status).
This function makes copies of the strings pointed to by
.I name
and
.I value
(by contrast with
.BR putenv (3)).
.P
The
.BR unsetenv ()
function deletes the variable
.I name
from
the environment.
If
.I name
does not exist in the environment,
then the function succeeds, and the environment is unchanged.
.SH RETURN VALUE
.BR setenv ()
and
.BR unsetenv ()
functions return zero on success,
or \-1 on error, with
.I errno
set to indicate the error.
.SH ERRORS
.TP
.B EINVAL
.I name
is NULL, points to a string of length 0,
or contains an \[aq]=\[aq] character.
.TP
.B ENOMEM
Insufficient memory to add a new variable to the environment.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR setenv (),
.BR unsetenv ()
T}	Thread safety	MT-Unsafe const:env
.TE
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, 4.3BSD.
.P
Prior to glibc 2.2.2,
.BR unsetenv ()
was prototyped
as returning
.IR void ;
more recent glibc versions follow the
POSIX.1-compliant prototype shown in the SYNOPSIS.
.SH CAVEATS
POSIX.1 does not require
.BR setenv ()
or
.BR unsetenv ()
to be reentrant.
.SH BUGS
POSIX.1 specifies that if
.I name
contains an \[aq]=\[aq] character, then
.BR setenv ()
should fail with the error
.BR EINVAL ;
however, versions of glibc before glibc 2.3.4 allowed an \[aq]=\[aq] sign in
.IR name .
.SH SEE ALSO
.BR clearenv (3),
.BR getenv (3),
.BR putenv (3),
.BR environ (7)