PATH is an
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 ...
on
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,
DOS,
OS/2
OS/2 (Operating System/2) is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 ...
, and
Microsoft Windows, specifying a set of
directories
Directory may refer to:
* Directory (computing), or folder, a file system structure in which to store computer files
* Directory (OpenVMS command)
* Directory service, a software application for organizing information about a computer network's ...
where executable programs are located. In general, each executing
process
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
*Business process, activities that produce a specific se ...
or
user session has its own PATH setting.
History
Multics
Multics ("Multiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of ...
originated the idea of a search path. The early
Unix shell
A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system t ...
only looked for program names in
/bin
, but by
Version 3 Unix the directory was too large and
/usr/bin
, and a search path, became part of the operating system.
Unix and Unix-like
On
POSIX
The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming inte ...
and Unix-like operating systems, the
$PATH
variable is specified as a list of one or more directory names separated by colon (
:
) characters.
Directories in the
PATH
-string are not meant to be escaped, making it impossible to have directories with
:
in their name.
The
/bin
,
/usr/bin
, and
/usr/local/bin
directories are typically included in most users'
$PATH
setting (although this varies from implementation to implementation). The
superuser
In computing, the superuser is a special user account used for system administration. Depending on the operating system (OS), the actual name of this account might be root, administrator, admin or supervisor. In some cases, the actual name of th ...
also typically has
/sbin
and
/usr/sbin
entries for easily executing
system administration
A system administrator, or sysadmin, or admin is a person who is responsible for the upkeep, configuration, and reliable operation of computer systems, especially multi-user computers, such as servers. The system administrator seeks to en ...
commands. The current directory (
.
) is sometimes included by users as well, allowing programs residing in the
current working directory to be executed directly. System administrators as a rule do ''not'' include it in
$PATH
in order to prevent the accidental execution of scripts residing in the current directory, such as may be placed there by a malicious
tarbomb. In that case, executing such a program requires specifying an absolute (
/home/userjoe/bin/script.sh
) or relative path (
./script.sh
) on the command line.
When a command name is specified by the user or an
exec call is made from a program, the system searches through
$PATH
, examining each directory from left to right in the list, looking for a
filename
A filename or file name is a name used to uniquely identify a computer file in a directory structure. Different file systems impose different restrictions on filename lengths.
A filename may (depending on the file system) include:
* name &nda ...
that matches the command name. Once found, the program is executed as a
child process
A child process in computing is a process created by another process (the parent process). This technique pertains to multitasking operating systems, and is sometimes called a subprocess or traditionally a subtask.
There are two major procedure ...
of the command shell or program that issued the command.
DOS, OS/2, and Windows
On DOS, OS/2, and Windows operating systems, the
%PATH%
variable is specified as a list of one or more directory names separated by semicolon (
;
) characters.
Microsoft.com, PATH command
/ref>
The Windows system directory (typically C:\WINDOWS\system32
) is typically the first directory in the path, followed by many (but not all) of the directories for installed software packages. Many programs do not appear in the path as they are not designed to be executed from a command window, but rather from a Graphical User Interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows User (computing), users to Human–computer interaction, interact with electronic devices through graphical icon (comp ...
. Some programs may add their directory to the front of the PATH variable's content during installation, to speed up the search process and/or override OS commands. In the DOS era, it was customary to add a PATH ;%PATH% or SET PATH=;%PATH% line to AUTOEXEC.BAT
AUTOEXEC.BAT is a system file that was originally on DOS-type operating systems. It is a plain-text batch file in the root directory of the boot device. The name of the file is an abbreviation of "automatic execution", which describes its funct ...
.
When a command is entered in a command shell or a system call is made by a program to execute a program, the system first searches the current working directory and then searches the path, examining each directory from left to right, looking for an executable
In computing, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instructions", as opposed to a data fil ...
filename that matches the command name given. Executable programs have filename extension
A filename extension, file name extension or file extension is a suffix to the name of a computer file (e.g., .txt, .docx, .md). The extension indicates a characteristic of the file contents or its intended use. A filename extension is typically ...
s of EXE
or COM
, and batch scripts have extensions of BAT
or CMD
. Other executable filename extensions can be registered with the system as well.
Once a matching executable file is found, the system spawns a new process which runs it.
The PATH variable makes it easy to run commonly used programs located in their own folders. If used unwisely, however, the value of the PATH variable can slow down the operating system by searching too many locations, or invalid locations.
Invalid locations can also ''stop'' services from running altogether, especially the 'Server' service which is usually a dependency for other services within a Windows Server environment.
References
{{DEFAULTSORT:Path (Variable)
Computer file systems
Environment variables