Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ENVIRON(5)		   Linux Programmer's Manual		    ENVIRON(5)

       environ - user environment

       extern char **environ;

       The variable environ points to an array of strings called the `environ-
       ment'.  (This variable must be declared in the user program, but	is de-
       clared  in  the header file unistd.h in case the	header files came from
       libc4 or	libc5, and in case they	came from glibc	 and  _GNU_SOURCE  was
       defined.)   This	 array	of strings is made available to	the process by
       the exec(3) call	that started the process.  By convention these strings
       have the	form `name=value'.  Common examples are:

       USER   The  name	 of  the logged-in user	(used by some BSD-derived pro-

	      The name of the logged-in	user (used by  some  System-V  derived

       HOME   A	user's login directory,	set by login(1)	from the password file

       LANG   The name of a locale to use for locale categories	when not over-
	      ridden  by  LC_ALL  or  more specific environment	variables like
	      LC_TIME, cf.  locale(5).

       PATH   The  sequence  of	 directory  prefixes that sh(1)	and many other
	      programs apply in	searching for a	file known  by	an  incomplete
	      path  name.   The	prefixes are separated by `:'.	(Similarly one
	      has CDPATH used by some shells to	find the target	 of  a	change
	      directory	 command, MANPATH used by man(1) to find manual	pages,

       PWD    The current working directory. Set by some shells.

       SHELL  The file name of the user's login	shell.

       TERM   The terminal type	for which output is to be prepared.

       PAGER  The user's preferred utility to display text files.

	      The user's preferred utility to edit text	files.

	      The user's preferred utility to browse URLs. Sequence of	colon-
	      separated		   browser	      commands.		   See .

       Further names may be placed in the environment by  the  export  command
       and  `name=value' in sh(1), or by the setenv command if you use csh(1).
       Arguments may also be placed in the environment	at  the	 point	of  an
       exec(3).	  A  C	program	can manipulate its environment using the func-
       tions getenv(3),	putenv(3), setenv(3), and unsetenv(3).

       Note that the behaviour of many programs	and library routines is	influ-
       enced  by  the  presence	 or value of certain environment variables.  A
       random collection:

       etc. influence locale handling, cf.  locale(5).

       TMPDIR  influences  the	path  prefix of	names created by tmpnam(3) and
       other routines, the temporary directory used by sort(1) and other  pro-
       grams, etc.

       LD_LIBRARY_PATH,	 LD_PRELOAD and	other LD_* variables influence the be-
       haviour of the dynamic loader/linker.

       POSIXLY_CORRECT makes certain programs and library routines follow  the
       prescriptions of	POSIX.

       The behaviour of	malloc(3) is influenced	by MALLOC_* variables.

       The variable HOSTALIASES	gives the name of a file containing aliases to
       be used with gethostbyname(3).

       TZ and TZDIR give time zone information used by	tzset(3)  and  through
       that by functions like ctime(), localtime(), mktime(), strftime().  See
       also tzselect(1).

       TERMCAP gives information on how	to address a given terminal (or	 gives
       the name	of a file containing such information).

       COLUMNS	and  LINES  tell  applications about the window	size, possibly
       overriding the actual size.

       PRINTER or LPDEST may specify the desired printer to use. See lpr(1).


       Clearly there is	a security risk	here. Many a system command  has  been
       tricked into mischief by	a user who specified unusual values for	IFS or

       There is	also the risk of name space pollution.	Programs like make and
       autoconf	allow overriding of default utility names from the environment
       with similarly named variables in all caps.  Thus one uses CC to	select
       the  desired  C	compiler (and similarly	MAKE, AR, AS, FC, LD, LEX, RM,
       YACC, etc.).  However, in some traditional  uses	 such  an  environment
       variable	 gives	options	 for the program instead of a pathname.	 Thus,
       one has MORE, LESS, and GZIP.  Such usage is considered	mistaken,  and
       to  be avoided in new programs. The authors of gzip should consider re-
       naming their option to GZIP_OPT.

       login(1),  sh(1),  bash(1),  csh(1),   tcsh(1),	 execve(2),   exec(3),
       getenv(3), putenv(3), setenv(3),	clearenv(3), unsetenv(3), locale(5)

Linux				  2001-12-14			    ENVIRON(5)


Want to link to this manual page? Use this URL:

home | help