env
is a
shell
Shell may refer to:
Architecture and design
* Shell (structure), a thin structure
** Concrete shell, a thin shell of concrete, usually with no interior columns or exterior buttresses
** Thin-shell structure
Science Biology
* Seashell, a hard o ...
command
Command may refer to:
Computing
* Command (computing), a statement in a computer language
* COMMAND.COM, the default operating system shell and command-line interpreter for DOS
* Command key, a modifier key on Apple Macintosh computer keyboards
* ...
for
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, an ...
and
Unix-like
A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also i ...
s. It is used to either print a list of
environment variable
An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. They are part of the environment in which a process runs. For example, a running process can query the value of the TEMP envi ...
s or run another utility in an altered environment without having to modify the currently existing environment. Using
env
, variables may be added or removed, and existing variables may be changed by assigning new values to them.
In practice,
env
has another common use. It is often used by
shell scripts to launch the correct
interpreter. In this usage, the environment is typically not changed.
History
The version of
env
bundled in
GNU
GNU () is an extensive collection of free software (383 packages as of January 2022), which can be used as an operating system or can be used in parts with other operating systems. The use of the completed GNU tools led to the family of operat ...
coreutils
The GNU Core Utilities or coreutils is a package of GNU software containing implementations for many of the basic tools, such as cat, ls, and rm, which are used on Unix-like operating systems.
In September 2002, the ''GNU coreutils'' were cr ...
was written by Richard Mlynarik, David MacKenzie, and Assaf Gordon.
It first appeared in
4.4BSD The History of the Berkeley Software Distribution begins in the 1970s.
1BSD (PDP-11)
The earliest distributions of Unix from Bell Labs in the 1970s included the source code to the operating system, allowing researchers at universities to modify a ...
, and is a part of POSIX.1 (with the option only).
GNU's has been extended to handle signals and the current directory.
[ FreeBSD's supports a custom search path. Extensions found in both versions include , for unsetting variables, and , for splitting arguments (mainly in shebang).][
]
Examples
To print out the set of current environment variables:
env
To create a new environment without any existing environment variables for a new shell:
env -i /bin/sh
To execute the X application xcalc
The X.Org Foundation is a non-profit corporation chartered to research, develop, support, organize, administrate, standardize, promote, and defend a free and open accelerated graphics stack. This includes, but is not limited to, the following p ...
and have it appear on a different display (i.e., with a modified environment whether the specified environment variable is replaced with the new value):
env DISPLAY=foo.bar:1.0 xcalc
Note that this use of env is often unnecessary since most shells support setting environment variables in front of a command:
DISPLAY=foo.bar:1.0 xcalc
env may also be used in the hashbang
In computing, a shebang is the character sequence consisting of the characters number sign and exclamation mark () at the beginning of a script. It is also called sharp-exclamation, sha-bang, hashbang, pound-bang, or hash-pling.
When a text fil ...
line of a script to allow the interpreter to be looked up via the PATH. For example, here is the code of a Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
script:
#!/usr/bin/env python3
print("Hello, World!")
In this example, /usr/bin/env
is the full path
A path is a route for physical travel – see Trail.
Path or PATH may also refer to:
Physical paths of different types
* Bicycle path
* Bridle path, used by people on horseback
* Course (navigation), the intended path of a vehicle
* Desire p ...
of the env
command. The environment is not altered.
Note that it is possible to specify the interpreter without using env
, by giving the full path of the python
interpreter. A problem with that approach is that on different computer systems, the exact path may be different. By instead using env
as in the example, the interpreter is searched for and located at the time the script is run (more precisely, env
does a system call to execvp
, which does the job of locating the interpreter and launching it). This makes the script more portable
Portable may refer to:
General
* Portable building, a manufactured structure that is built off site and moved in upon completion of site and utility work
* Portable classroom, a temporary building installed on the grounds of a school to provide ...
, but also increases the risk that the wrong interpreter is selected because it searches for a match in every directory on the executable search path. It also suffers from the same problem in that the path to the env
binary may also be different on a per-machine basis.
See also
* set
Set, The Set, SET or SETS may refer to:
Science, technology, and mathematics Mathematics
*Set (mathematics), a collection of elements
*Category of sets, the category whose objects and morphisms are sets and total functions, respectively
Electro ...
References
External links
*
*
env
€”manual page from GNU
GNU () is an extensive collection of free software (383 packages as of January 2022), which can be used as an operating system or can be used in parts with other operating systems. The use of the completed GNU tools led to the family of operat ...
coreutils
The GNU Core Utilities or coreutils is a package of GNU software containing implementations for many of the basic tools, such as cat, ls, and rm, which are used on Unix-like operating systems.
In September 2002, the ''GNU coreutils'' were cr ...
.
*
*
*
*
*
{{Core Utilities commands
Standard Unix programs
Unix SUS2008 utilities
Inferno (operating system) commands
IBM i Qshell commands
Environment variables