stringtranslate.com

ПУТЬ (переменная)

PATH — это переменная среды в Unix-подобных операционных системах , DOS , OS/2 и Microsoft Windows , определяющая набор каталогов , в которых расположены исполняемые программы. В общем, каждый выполняющийся процесс или пользовательский сеанс имеет свой собственный параметр PATH.

История

В Multics возникла идея пути поиска. Ранняя оболочка Unix искала имена программ только в формате /bin, но в версии 3 Unix каталог был слишком большим /usr/bin, и путь поиска стал частью операционной системы. [1]

Unix и Unix-подобные

В 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

В операционных системах 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.

Рекомендации

  1. ^ Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139.
  2. ^ Спецификация Open Group Unix, переменные среды
  3. ^ Спецификация Open Group Unix, функция execve()
  4. ^ Dash exec.c как пример реализации парсера PATH-строки
  5. ^ Microsoft.com, команда PATH