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строке не предназначены для экранирования, что делает невозможным наличие каталогов с :в их имени. [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

В операционных системах 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). Исследовательский ридер Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
  2. ^ Спецификация Open Group Unix, Переменные среды
  3. ^ Спецификация Open Group Unix, функция execve()
  4. ^ Dash exec.c как пример реализации анализатора PATH-строки
  5. ^ Microsoft.com, команда PATH