В вычислениях, рабочий каталог процесса процесса представляет собой каталог иерархической файловой системы, если есть, динамически связанный с каждым процессом. Иногда его называют текущим рабочим каталогом (CWD), например. функцию BSD getcwd(3)
или просто текущий каталог . Когда процесс обращается к файлу, используя простое имя файла или относительный путь (в отличие от файла, обозначенного полным путем из корневого каталога ), ссылка интерпретируется относительно рабочий каталог процесса. Так, например, процесс с рабочим каталогом / rabbit-shoes, который просит создать файл foo.txt, в конечном итоге создаст файл /rabbit-shoes/foo.txt.
В большинстве компьютерных файловых систем каждый каталог имеет запись (обычно с именем «.»), которая указывает на сам каталог.
В большинстве DOS и UNIX командных оболочек, а также в интерпретаторах командной строки Microsoft Windows cmd.exe и Windows PowerShell, рабочий каталог можно изменить с помощью команд CD или CHDIR . В оболочках Unix команда pwd выводит полный путь к рабочему каталогу; эквивалентной командой в DOS и Windows является CDили CHDIRбез аргументов (тогда как в Unix cd, используемый без аргументов, возвращает пользователя в его / ее домашний каталог ).
Переменная среды PWD(в оболочках Unix / Linux) или переменные псевдо-среды CD (в Windows COMMAND. COM и cmd.exe, но не в OS / 2 и DOS), или _CWD, _CWDS, _CWPи _CWPS(в 4DOS, 4OS2, 4NT и т. Д.) Можно использовать в сценариях, поэтому нет необходимости запускать внешнюю программу. Microsoft Windows ярлыки файлов имеют возможность хранить рабочий каталог.
COMMAND.COM в DR-DOS 7.02 и выше предоставляет ECHOS, вариант команды ECHO без исключения завершающий перевод строки. Это можно использовать для создания временного пакетного задания, сохраняющего рабочий каталог в переменной среды, например CD, для последующего использования, например:
ECHOS SET CD =>SETCD.BAT CHDIR>>SETCD.BAT CALL SETCD.BAT DEL SETCD.BAT
В качестве альтернативы, в Multiuser DOS и DR-DOS 7.02 и выше различные внутренние и внешние команды поддерживают параметр / B(для «Партии»). Это изменяет вывод команд, чтобы он стал пригодным для прямого ввода в командную строку (при перенаправлении его в пакетный файл) или использования в качестве параметра для других команд (используя его в качестве ввода для другой команды). Если CHDIRвыдаст путь к каталогу, например C: \ DOS
, команда типа CHDIR / Bвыдаст CHDIR C: \ DOS
вместо этого, чтобы CHDIR / B>RETDIR.BATсоздавал временное пакетное задание, позволяющее вернуться в этот каталог позже.
Рабочий каталог также отображается токеном $ Pкоманды PROMPT
. Чтобы приглашение было коротким даже внутри структур глубоких подкаталогов., DR-DOS 7.07 COMMAND.COM поддерживает токен $ Wдля отображения только самого глубокого уровня подкаталога. Итак, если по умолчанию PROMPT $ P $ Gприведет к f.e. в C:\DOS>
или C:\DOS\DRDOS>
вместо PROMPT $ N: $ W $ Gбудет получено C: DOS>
и C:DRDOS>
соответственно. Аналогичная возможность (с использованием $ Wи $ w) была также добавлена в 4DOS.
В DOS абсолютные пути к рабочие каталоги всех томов хранятся внутри в виде массива данных, называемого (), который динамически выделяется во время загрузки для хранения необходимого количества слотов для всех дисков (или как определено в LASTDRIVE. Эта структура накладывает ограничение на длину 66 символов на полный путь каждого рабочего каталога и, таким образом, неявно также ограничивает максимально возможную глубину подкаталогов. DOS Plus и более старые выпуски DR DOS (до DR DOS 6.0 в 1991 г.) не имело такого ограничения из-за их реализации с использованием эмуляции DOS поверх Concurrent DOS - (и, следовательно, CP / M-86 -) производное ядро, которое внутренне организовало подкаталоги как относительные ссылки на родительские каталоги, а не как абсолютные пути. Начиная с PalmDOS и DR DOS 6.0 (с 1992 г.) и выше, для максимальной совместимости перешли на использование CDS. В программах DOS они также сталкиваются с теми же ограничениями, что и другие DOS.
Большинство языков программирования предоставляют интерфейс к файловой системе функции операционной системы, включая возможность установки (изменения) рабочего каталога программы.
В языке C функция POSIX chdir()
воздействует на системный вызов который меняет рабочий каталог. Его аргументом является текстовая строка с путем к новому каталогу, абсолютным или относительным по отношению к старому. Если возможно, он может быть вызван процессом для установки своего рабочего каталога.
Та же функция есть на других языках. В Visual Basic это обычно пишется как CHDIR ()
.
В отличие от функции Windows API или POSIX C, ни Java ни язык программирования, ни виртуальная машина Java не поддерживает напрямую chdir ()
; запрос на изменение оставался открытым более десяти лет, пока группа, ответственная за Java, рассматривала альтернативы, хотя к 2008 году запрос был отклонен после того, как была введена только ограниченная поддержка (затрагивающая сначала java.lang.Runtime
и более поздних версий, java.lang.ProcessBuilder
).