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, a ...
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 daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
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 env ...
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 script
A shell script is a computer program designed to be run by a Unix shell, a command-line interpreter. The various dialects of shell scripts are considered to be scripting languages. Typical operations performed by shell scripts include file manip ...
s 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
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any ...
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 c ...
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 an ...
, and is a part of POSIX.1 (with the option only).
GNU's has been extended to handle signals and the current directory.
[ ]FreeBSD
FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
'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 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 ...
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 a ...
, 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
References
External links
*
*
env
��manual page from GNU
GNU () is an extensive collection of free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any ...
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 c ...
.
*
*
*
*
*
{{Core Utilities commands
Standard Unix programs
Unix SUS2008 utilities
Inferno (operating system) commands
IBM i Qshell commands
Environment variables