PATH - это переменная среды в Unix-подобных операционных системах, DOS, OS / 2 и Microsoft Windows, определяющая набор каталогов, в которых расположены исполняемые программы. В общем, каждый выполняющийся процесс или пользовательский сеанс имеет свою собственную настройку PATH.
Multics породила идею пути поиска. Ранняя оболочка Unix только искала имена программ /bin
, но в версии 3 Unix каталог был слишком большим /usr/bin
, и путь поиска стал частью операционной системы.
В операционных системах, подобных POSIX и Unix, $PATH
переменная указывается как список из одного или нескольких имен каталогов, разделенных :
символами двоеточия (). Каталоги в PATH
-string не предназначены для экранирования, что делает невозможным создание каталогов :
в их имени.
Каталоги /bin
, /usr/bin
и /usr/local/bin
обычно включаются в $PATH
настройки большинства пользователей (хотя это варьируется от реализации к реализации). Суперпользователя также, как правило, имеет /sbin
и /usr/sbin
запись для выполнения легко администрирование системы команд. Текущий каталог ( .
) иногда также включается пользователями, что позволяет напрямую выполнять программы, находящиеся в текущем рабочем каталоге. Системные администраторы, как правило, не включают его $PATH
, чтобы предотвратить случайное выполнение сценариев, находящихся в текущем каталоге, например, которые могут быть помещены туда вредоносным tarbomb. В этом случае для выполнения такой программы необходимо указать абсолютный ( /home/userjoe/bin/script.sh
) или относительный путь ( ./script.sh
) в командной строке.
Когда имя команды задается пользователем или из программы выполняется вызов exec, система выполняет поиск $PATH
, исследуя каждый каталог слева направо в списке, ища имя файла, которое соответствует имени команды. Найденная программа запускается как дочерний процесс командной оболочки или программы, выдавшей команду.
В операционных системах DOS, OS / 2 и Windows %PATH%
переменная указывается как список из одного или нескольких имен каталогов, разделенных ;
символами точки с запятой ().
Системный каталог Windows (обычно C:\WINDOWS\system32
) обычно является первым каталогом в пути, за которым следуют многие (но не все) каталоги для установленных пакетов программного обеспечения. Многие программы не отображаются в пути, поскольку они предназначены не для выполнения из командного окна, а из графического интерфейса пользователя. Некоторые программы могут добавлять свой каталог в начало содержимого переменной PATH во время установки, чтобы ускорить процесс поиска и / или переопределить команды ОС. В эпоху DOS было принято добавлять в AUTOEXEC.BAT строку или. PATH {program directory};%PATH%
SET PATH={program directory};%PATH%
Когда команда вводится в командной оболочке или программа выполняет системный вызов для выполнения программы, система сначала ищет текущий рабочий каталог, а затем ищет путь, исследуя каждый каталог слева направо, ища исполняемое имя файла. которое соответствует заданному имени команды. Исполняемые программы имеют расширение файлов из EXE
или COM
, и пакетных сценариев имеют расширение BAT
или CMD
. Другие расширения исполняемых файлов также могут быть зарегистрированы в системе.
После того, как соответствующий исполняемый файл найден, система нерестится новый процесс, который запускает его.
Переменная PATH позволяет легко запускать часто используемые программы, расположенные в их собственных папках. Однако при неразумном использовании значение переменной PATH может замедлить работу операционной системы из-за поиска в слишком большом количестве или недопустимых местоположениях.
Недопустимые местоположения также могут полностью остановить работу служб, особенно службы «Сервер», которая обычно является зависимостью для других служб в среде Windows Server.