PATH — это переменная среды в Unix-подобных операционных системах , DOS , OS/2 и Microsoft Windows , определяющая набор каталогов , в которых расположены исполняемые программы. В общем, каждый выполняющийся процесс или пользовательский сеанс имеет свой собственный параметр PATH.
В Multics возникла идея пути поиска. Ранняя оболочка Unix искала имена программ только в формате /bin
, но в версии 3 Unix каталог был слишком большим /usr/bin
, и путь поиска стал частью операционной системы. [1]
В POSIX и Unix-подобных операционных системах $PATH
переменная указывается как список из одного или нескольких имен каталогов, разделенных двоеточиями ( :
). [2] [3]
Каталоги в PATH
строке -string не предназначены для экранирования, что делает невозможным наличие каталогов :
в их имени. [4]
Каталоги /bin
, /usr/bin
и /usr/local/bin
обычно включаются в настройки большинства пользователей $PATH
(хотя это варьируется от реализации к реализации). Суперпользователь также обычно имеет записи/sbin
для /usr/sbin
удобного выполнения команд системного администрирования . Текущий каталог ( .
) иногда также включается пользователями, что позволяет запускать программы, находящиеся в текущем рабочем каталоге, напрямую. Системные администраторы, как правило, не включают его, $PATH
чтобы предотвратить случайное выполнение скриптов, находящихся в текущем каталоге, например, которые могут быть помещены туда вредоносной tar-бомбой . В этом случае для выполнения такой программы необходимо указать абсолютный ( /home/userjoe/bin/script.sh
) или относительный путь ( ./script.sh
) в командной строке.
Когда имя команды указывается пользователем или из программы выполняется вызов exec$PATH
, система выполняет поиск , проверяя каждый каталог слева направо в списке в поисках имени файла , соответствующего имени команды. После обнаружения программа выполняется как дочерний процесс командной оболочки или программы, выдавшей команду.
В операционных системах DOS, OS/2 и Windows %PATH%
переменная указывается в виде списка из одного или нескольких имен каталогов, разделенных ;
символами точки с запятой ( ). [5]
Системный каталог 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.