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