ENV(1) | General Commands Manual | ENV(1)

# NAME

`env` — set and print environment

# SYNOPSIS

`env` | [`-0i`] [`-C` dir] [`-u` name] [`-``-`] [name=value ...] [`-``-`] [utility [argument ...]]

# DESCRIPTION

`env` executes utility, with the given arguments, after modifying the environment as specified on the command line. Each name=value option specifies an environment variable, name, with a value of value which may be empty, that is to replace an existing environment variable with the same name, or otherwise is to be added to the environment.

The ‘`-i`’ option causes `env` to completely ignore the environment it inherits.

The ‘`-C` dir’ option causes the working directory to be changed to dir, and the environment variable `PWD` to be removed from the environment.

The ‘`-u` name’ option causes removal of the name environment variable if it is in the environment. This is similar to the `unset` command in sh(1). The value for name must not include the ‘`=`’ character.

To allow for either a name to be added to the environment, or the utility's name (if no environment additions are present), to begin with a minus sign (‘-’) the first “`-``-`” argument is required. To allow for utility's name to contain an equals character (‘=’) (anywhere in its word) the second “`-``-`” is required. If there are no name=value arguments given, then to allow for utility to contain an equals character, both “`-``-`” arguments are required. The first ends the options, the second ends the (in this case empty) environment variable additions.

If no utility is specified, `env` prints out the names and values of the variables in the environment. Each name=value pair is separated by a new line unless `-0` is specified, in which case name/value pairs are separated by a nul character (‘\0’). The `-0` option is ignored if a utility is given.

# EXIT STATUS

If a utility is specified, can be located, and successfully invoked, the exit status of `env` is the exit status of the utility. See its documentation for the possible values and interpretations.

Otherwise `env` exits with one of the following values:

0
  No utility was specified, and `env` has successfully written the contents of the (possibly modified) environment to standard output.
125
  `env` was given an invalid option, a requested operation failed, or some other error occurred.
126
  utility was found, but could not be invoked.
127
  utility could not be found.

Whenever `env` exits with a non-zero status, without having invoked a utility, it writes a message to the standard error stream identifying itself, and the reason for the non-zero exit. This can help distinguish cases where `env` exits because of a problem, from when utility does so. The case of a zero exit status is simpler; if a utility was given on the command line, the zero status is from that utility, otherwise it is from `env`.

# COMPATIBILITY

The historic `-` option has been deprecated but is still supported in this implementation.

The `-C`, `-u` and `-0` options are non-standard extensions.

# SEE ALSO

chdir(2), execvp(3), environ(7)

# STANDARDS

The `env` utility conforms to IEEE Std 1003.2-1992 (“POSIX.2”).

# HISTORY

The `env` command appeared in 4.4BSD.

The `-u` and `-0` options first appeared in NetBSD 10, after earlier appearing in other systems.

The `-C` option first appeared in NetBSD 10.1.

February 9, 2025 | NetBSD 11.0