ПУТЬ (переменная)
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2014 г. ) |
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]
The /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 было принято добавлять PATH {program directory};%PATH%
или SET PATH={program directory};%PATH%
строка в AUTOEXEC.BAT .
Когда в командную оболочку вводится команда или программа выполняет системный вызов для выполнения программы, система сначала ищет текущий рабочий каталог , а затем ищет путь, проверяя каждый каталог слева направо в поисках имени исполняемого файла. которое соответствует указанному имени команды. Исполняемые программы имеют расширения имен файлов EXE
или COM
, а пакетные сценарии имеют расширения BAT
или CMD
. Другие расширения имен исполняемых файлов также могут быть зарегистрированы в системе.
Как только соответствующий исполняемый файл найден, система запускает новый процесс, который его запускает.
Переменная PATH позволяет легко запускать часто используемые программы, расположенные в отдельных папках. Однако при неразумном использовании значение переменной PATH может замедлить работу операционной системы из-за поиска слишком большого количества местоположений или недопустимых местоположений.
Неверные местоположения также могут полностью остановить работу служб, особенно службы «Сервер», которая обычно зависит от других служб в среде Windows Server.
Ссылки
[ редактировать ]- ^ Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139.
- ^ Спецификация Open Group Unix, переменные среды
- ^ Спецификация Open Group Unix, функция execve()
- ^ Dash exec.c как пример реализации парсера PATH-строки
- ^ Microsoft.com, команда PATH