В вычислении , то рабочий каталог из процесса является каталог иерархической файловой системы , если таковые имеются, [NB 1] динамически связан с каждым процессом. Иногда его называют текущим рабочим каталогом (CWD) , например функцией BSD , или просто текущим каталогом . [1] Когда процесс обращается к файлу, используя простое имя файла или относительный путь (в отличие от файла, обозначенного полным путем из корневого каталога) ссылка интерпретируется относительно рабочего каталога процесса. Так, например, процесс с рабочим каталогом, /rabbit-shoesкоторый просит создать файл foo.txt, в конечном итоге создаст файл /rabbit-shoes/foo.txt.
В операционных системах
В большинстве компьютерных файловых систем каждый каталог имеет запись (обычно называемую " ."), которая указывает на сам каталог.
В большинстве командных оболочек DOS и UNIX , а также в интерпретаторах командной строки Microsoft Windows cmd.exe и Windows PowerShell рабочий каталог можно изменить с помощью команд или . В Unix - оболочках , то команда выводит полный путь к рабочей директории; эквивалентная команда в DOS и Windows имеет аргументы или без них (тогда как в Unix при использовании без аргументов пользователь возвращается в его / ее домашний каталог ).CDCHDIR pwdCDCHDIRcd
Переменная окружения PWD (в оболочках Unix / Linux), или переменные псевдо-среды CD (в ОС Windows COMMAND.COM и cmd.exe , но не в OS / 2 и DOS), или _CWD, _CWDS, _CWPи _CWPS(при 4DOS , 4OS2 , 4NT и т.д. .) [2] можно использовать в скриптах, поэтому нет необходимости запускать внешнюю программу. Ярлыки файлов Microsoft Windows могут сохранять рабочий каталог.
COMMAND.COM в DR-DOS 7.02 и более поздних версиях предоставляет ECHOSвариант ECHOкоманды без завершающего перевода строки. [3] [2] Это можно использовать для создания временного пакетного задания, сохраняющего рабочий каталог в переменной среды, например, CDдля последующего использования, например:
ECHOS SET CD => SETCD.BATCHDIR >> SETCD.BATВЫЗОВ SETCD.BATDEL SETCD.BAT
В качестве альтернативы, в многопользовательской DOS и DR-DOS 7.02 и выше различные внутренние и внешние команды поддерживают параметр /B(для «Пакетной обработки»). [4] Это изменяет вывод команд, чтобы он стал подходящим для прямого ввода из командной строки (при перенаправлении его в пакетный файл) или использования в качестве параметра для других команд (используя его как ввод для другой команды). Где CHDIRбы выпустить путь к каталогу , как C:\DOS
, команду , как CHDIR /Bбы выпустить CHDIR C:\DOS
вместо этого, так что CHDIR /B > RETDIR.BATбы создать временный batchjob , позволяющий вернуться в этот каталог позже.
Рабочий каталог также отображается токеном $P[nb 2]PROMPT
команды [5]. Чтобы приглашение было коротким даже внутри структур глубоких подкаталогов, DR-DOS 7.07 COMMAND.COM поддерживает токен $W[nb 2] для отображения только самый глубокий уровень подкаталога. Таким образом, если значение по умолчанию PROMPT $P$Gприведет к fe в C:\DOS>
или C:\DOS\DRDOS>
, PROMPT $N:$W$Gвместо этого будет получено C:DOS>
и C:DRDOS>
, соответственно. Аналогичное средство (с использованием $Wи $w) было добавлено и в 4DOS . [2]
В DOS абсолютные пути к рабочим каталогам всех томов хранятся внутри в виде массивов структуры данных, называемой Current Directory Structure ( CDS ), которая динамически выделяется во время загрузки для хранения необходимого количества слотов для всех дисков ( или как определено LASTDRIVE . [6] [7] Эта структура накладывает ограничение на длину 66 символов на полный путь каждого рабочего каталога и, таким образом, неявно также ограничивает максимально возможную глубину подкаталогов. [6] DOS Plus и старше выпуски DR DOS (до DR DOS 6.0 в 1991 г.) не имели такого ограничения [7] [8] [2] из-за их реализации с использованием эмуляции DOS поверх Concurrent DOS - (и, следовательно, CP / M-86 - ) производное ядро, которое внутренне организовало подкаталоги как относительные ссылки на родительские каталоги, а не как абсолютные пути. [7] [8] Поскольку PalmDOS и DR DOS 6.0 (с 1992 г.) и выше перешли на использование CDS для максимальной совместимости с программами DOS, поскольку ну, они столкнулись с теми же ограничениями, что и в o там ДОЗЫ. [7] [8]
В языках программирования
Большинство языков программирования предоставляют интерфейс для функций файловой системы операционной системы, включая возможность установки (изменения) рабочего каталога программы.
В языке C , в POSIX функции chdir()
эффекты системного вызова , который изменяет рабочую директорию. [9] Его аргумент - текстовая строка с путем к новому каталогу, абсолютным или относительным к старому. Там, где это возможно, он может быть вызван процессом для установки своего рабочего каталога.
Та же функция есть и на других языках. В Visual Basic это обычно пишется CHDIR()
.
В отличие от Windows API или функции POSIX C , ни язык программирования Java, ни виртуальная машина Java не поддерживают chdir()
напрямую; [ необходимо пояснение ] запрос на изменение оставался открытым более десяти лет, пока группа, ответственная за Java, рассматривала альтернативы, хотя к 2008 году запрос был отклонен после того, как была введена лишь ограниченная поддержка (затрагивающая сначала, java.lang.Runtime
а затем java.lang.ProcessBuilder
). [10]
Смотрите также
- Домашний каталог
- Корневая директория
- Родительский каталог
- chroot (системы Linux)
- Загрузочный привод (другая, но родственная концепция)
Заметки
- ^ Существуют операционные системы, которые поддерживают иерархическую файловую систему, но не имеют понятия «рабочий каталог»; например, DX10 от Texas Instruments , используемый для серии TI-990 .
- ^ Б Точно так же , как $Oработает как альтернатива в $Pрамках DR-DOS COMMAND.COM , $Wимеет псевдоним , $Yза исключением , что она будет подавлена на дискетах , чтобы избежать критических ошибок сообщения или задержки при попытке получить путь к не- вставлена дискета.
Рекомендации
- ^ «Microsoft Windows - функция SetCurrentDirectory» . Microsoft . Архивировано 27 мая 2018 года . Проверено 27 мая 2017 .
- ^ а б в г Братья Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Маттиас Р .; Краситель, Чарльз Э .; Георгиев, Лучезар И. (27.02.2002). Онлайн-справка по 4DOS 8.00 .
- ^ DR-DOS 7.03 WHATSNEW.TXT - Изменения с DR-DOS 7.02 на DR-DOS 7.03 . Caldera, Inc. 24 декабря 1998 г. Архивировано 8 апреля 2019 года . Проверено 8 апреля 2019 .
- ^ Интерактивная документация CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 1997-02-10. HELP.HLP.
- ^ Caldera DR-DOS 7.02 Руководство пользователя . Caldera, Inc. 1998 [1993, 1997]. Архивировано из оригинала на 2016-11-04 . Проверено 10 августа 2013 .
- ^ а б Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено за счет включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . ISBN 0-201-63287-X. ISBN 978-0-201-63287-3 .(xviii + 856 + vi страниц, 3,5-дюймовая дискета) Ошибки: [1] [2]
- ^ а б в г Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано 10 сентября 2017 года . Проверено 6 августа 2014 .(NB. NWDOSTIP.TXT - это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних компонентов. Это часть еще большей
MPDOSTIP.ZIP
коллекции автора, поддерживаемой до 2001 года и распространяемой на многих сайтах в то время. Предоставленная ссылка указывает на старую версиюNWDOSTIP.TXT
файла, преобразованную в HTML .) [3] - ^ а б в Пол, Матиас Р. (1997-06-07) [апрель 1994]. «Глава 1.3.xi: Überlange Pfade». NWDOS7UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7 . MPDOSTIP . Выпуск 85 (на немецком языке). Архивировано 7 ноября 2016 года . Проверено 7 ноября 2016 .
- ^ «Базовые спецификации Open Group, выпуск 6 и IEEE Std 1003.1» (выпуск 6, изд. 2004 г.). IEEE и Open Группа . 2004 [2001]. Архивировано 9 февраля 2018 года . Проверено 27 мая 2018 .
- ^ «JDK-4045688: добавить chdir или аналогичное понятие изменения рабочего каталога» . База данных ошибок . Oracle ( Sun Microsystems ). 2008-08-18 [1997-04-17]. Архивировано 19 октября 2017 года . Проверено 20 февраля 2011 .
дальнейшее чтение
- Чен, Раймонд (2010-10-11). "Почему у каждого диска есть свой текущий каталог?" . Новая старая вещь . Microsoft . Архивировано 12 апреля 2016 года . Проверено 27 мая 2017 .
- Чен, Раймонд (2010-05-06). "Что это за странные = C: переменные среды?" . Новая старая вещь . Microsoft . Архивировано 27 мая 2018 года . Проверено 27 мая 2017 .
Внешние ссылки
- Рабочий каталог (wd) на Github - программный пакет, который отслеживает часто используемые каталоги в сеансе bash.