version 1, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
ENVIRON |
|
|
2 |
!!!ENVIRON |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
BUGS |
|
|
7 |
SEE ALSO |
|
|
8 |
---- |
|
|
9 |
!!NAME |
|
|
10 |
|
|
|
11 |
|
|
|
12 |
environ - user environment |
|
|
13 |
!!SYNOPSIS |
|
|
14 |
|
|
|
15 |
|
|
|
16 |
__extern char **environ; |
|
|
17 |
__ |
|
|
18 |
!!DESCRIPTION |
|
|
19 |
|
|
|
20 |
|
|
|
21 |
The variable ''environ'' points to an array of strings |
|
|
22 |
called the `environment'. (This variable must be declared in |
|
|
23 |
the user program, but is declared in the header file |
|
|
24 |
''unistd.h'' in case the header files came from libc4 or |
|
|
25 |
libc5, and in case they came from glibc and |
|
|
26 |
___GNU_SOURCE__ was defined.) This array of strings is |
|
|
27 |
made available to the process by the exec(3) call |
|
|
28 |
that started the process. By convention these strings have |
|
|
29 |
the form `''name''__=__''value'''. Common examples |
|
|
30 |
are: |
|
|
31 |
|
|
|
32 |
|
|
|
33 |
__USER__ |
|
|
34 |
|
|
|
35 |
|
|
|
36 |
The name of the logged-in user (used by some BSD-derived |
|
|
37 |
programs). |
|
|
38 |
|
|
|
39 |
|
|
|
40 |
__LOGNAME__ |
|
|
41 |
|
|
|
42 |
|
|
|
43 |
The name of the logged-in user (used by some System-V |
|
|
44 |
derived programs). |
|
|
45 |
|
|
|
46 |
|
|
|
47 |
__HOME__ |
|
|
48 |
|
|
|
49 |
|
|
|
50 |
A user's login directory, set by login(1) from the |
|
|
51 |
password file passwd(5). |
|
|
52 |
|
|
|
53 |
|
|
|
54 |
__LANG__ |
|
|
55 |
|
|
|
56 |
|
|
|
57 |
The name of a locale to use for locale categories when not |
|
|
58 |
overridden by __LC_ALL__ or more specific environment |
|
|
59 |
variables like __LC_COLLATE__, __LC_CTYPE__, |
|
|
60 |
__LC_MESSAGES__, __LC_MONETARY__, __LC_NUMERIC__, |
|
|
61 |
__LC_TIME__, cf. locale(5). |
|
|
62 |
|
|
|
63 |
|
|
|
64 |
__PATH__ |
|
|
65 |
|
|
|
66 |
|
|
|
67 |
The sequence of directory prefixes that sh(1) and |
|
|
68 |
many other programs apply in searching for a file known by |
|
|
69 |
an incomplete path name. The prefixes are separated by |
|
|
70 |
`__:__'. (Similarly one has __CDPATH__ used by some |
|
|
71 |
shells to find the target of a change directory command, |
|
|
72 |
__MANPATH__ used by man(1) to find manual pages, |
|
|
73 |
etc.) |
|
|
74 |
|
|
|
75 |
|
|
|
76 |
__PWD__ |
|
|
77 |
|
|
|
78 |
|
|
|
79 |
The current working directory. Set by some |
|
|
80 |
shells. |
|
|
81 |
|
|
|
82 |
|
|
|
83 |
__SHELL__ |
|
|
84 |
|
|
|
85 |
|
|
|
86 |
The file name of the user's login shell. |
|
|
87 |
|
|
|
88 |
|
|
|
89 |
__TERM__ |
|
|
90 |
|
|
|
91 |
|
|
|
92 |
The terminal type for which output is to be |
|
|
93 |
prepared. |
|
|
94 |
|
|
|
95 |
|
|
|
96 |
__PAGER__ |
|
|
97 |
|
|
|
98 |
|
|
|
99 |
The user's preferred utility to display text |
|
|
100 |
files. |
|
|
101 |
|
|
|
102 |
|
|
|
103 |
__EDITOR__/__VISUAL__ |
|
|
104 |
|
|
|
105 |
|
|
|
106 |
The user's preferred utility to edit text |
|
|
107 |
files. |
|
|
108 |
|
|
|
109 |
|
|
|
110 |
__BROWSER__ |
|
|
111 |
|
|
|
112 |
|
|
|
113 |
The user's preferred utility to browse URLs. Sequence of |
|
|
114 |
colon-separated browser commands. See |
|
|
115 |
http://www.tuxedo.org/~esr/BROWSER/ . |
|
|
116 |
|
|
|
117 |
|
|
|
118 |
Further names may be placed in the environment by the |
|
|
119 |
__export__ command and `name=value' in sh(1), or |
|
|
120 |
by the __setenv__ command if you use csh(1). |
|
|
121 |
Arguments may also be placed in the environment at the point |
|
|
122 |
of an exec(2). A C program can manipulate its |
|
|
123 |
environment using the functions getenv(3), |
|
|
124 |
putenv(3), setenv(3) and |
|
|
125 |
unsetenv(3). |
|
|
126 |
|
|
|
127 |
|
|
|
128 |
Note that the behaviour of many programs and library |
|
|
129 |
routines is influenced by the presence or value of certain |
|
|
130 |
environment variables. A random collection: |
|
|
131 |
|
|
|
132 |
|
|
|
133 |
The variables __LANG__, __LANGUAGE__, __NLSPATH__, |
|
|
134 |
__LOCPATH__, __LC_ALL__, __LC_MESSAGES__, etc. |
|
|
135 |
influence locale handling, cf. |
|
|
136 |
locale(5). |
|
|
137 |
|
|
|
138 |
|
|
|
139 |
__TMPDIR__ influences the path prefix of names created by |
|
|
140 |
__tmpnam(3)__ and other routines, the temporary directory |
|
|
141 |
used by sort(1) and other programs, etc. |
|
|
142 |
|
|
|
143 |
|
|
|
144 |
__LD_LIBRARY_PATH__, __LD_PRELOAD__ and other LD_* |
|
|
145 |
variables influence the behaviour of the dynamic |
|
|
146 |
loader/linker. |
|
|
147 |
|
|
|
148 |
|
|
|
149 |
__POSIXLY_CORRECT__ makes certain programs and library |
|
|
150 |
routines follow the prescriptions of POSIX. |
|
|
151 |
|
|
|
152 |
|
|
|
153 |
The behaviour of malloc(3) is influenced by MALLOC_* |
|
|
154 |
variables. |
|
|
155 |
|
|
|
156 |
|
|
|
157 |
The variable __HOSTALIASES__ gives the name of a file |
|
|
158 |
containing aliases to be used with |
|
|
159 |
gethostbyname(3). |
|
|
160 |
|
|
|
161 |
|
|
|
162 |
__TZ__ and __TZDIR__ give time zone |
|
|
163 |
information. |
|
|
164 |
|
|
|
165 |
|
|
|
166 |
__TERMCAP__ gives information on how to address a given |
|
|
167 |
terminal (or gives the name of a file containing such |
|
|
168 |
information). |
|
|
169 |
|
|
|
170 |
|
|
|
171 |
__COLUMNS__ and __LINES__ tell applications about the |
|
|
172 |
window size, possibly overriding the actual |
|
|
173 |
size. |
|
|
174 |
|
|
|
175 |
|
|
|
176 |
__PRINTER__ or __LPDEST__ may specify the desired |
|
|
177 |
printer to use. Etc. etc. |
|
|
178 |
!!BUGS |
|
|
179 |
|
|
|
180 |
|
|
|
181 |
Clearly there is a security risk here. Many a system command |
|
|
182 |
has been tricked into mischief by a user who specified |
|
|
183 |
unusual values for __IFS__ or |
|
|
184 |
__LD_LIBRARY_PATH__. |
|
|
185 |
|
|
|
186 |
|
|
|
187 |
There is also the risk of name space pollution. Programs |
|
|
188 |
like ''make'' and ''autoconf'' allow overriding of |
|
|
189 |
default utility names from the environment with similarly |
|
|
190 |
named variables in all caps. Thus one uses __CC__ to |
|
|
191 |
select the desired C compiler (and similarly __MAKE__, |
|
|
192 |
__AR__, __AS__, __FC__, __LD__, __LEX__, |
|
|
193 |
__RM__, __YACC__, etc.). However, in some traditional |
|
|
194 |
uses such an environment variable gives options for the |
|
|
195 |
program instead of a pathname. Thus one has __MORE__, |
|
|
196 |
__LESS__, and __GZIP__. Such usage is considered |
|
|
197 |
mistaken, and to be avoided in new programs. The authors of |
|
|
198 |
''gzip'' should consider renaming their option to |
|
|
199 |
__GZIP_OPT__. |
|
|
200 |
!!SEE ALSO |
|
|
201 |
|
|
|
202 |
|
|
|
203 |
login(1), sh(1), bash(1), |
|
|
204 |
csh(1), tcsh(1), execve(2), |
|
|
205 |
exec(3), getenv(3), putenv(3), |
|
|
206 |
setenv(3), unsetenv(3), |
|
|
207 |
locale(5) |
|
|
208 |
---- |