Рабочий каталог
В вычислительной технике рабочий каталог процесса — это каталог иерархической файловой системы , если таковая имеется. [номер 1] динамически связан с процессом. Иногда его называют текущим рабочим каталогом (CWD) , например BSD. getcwd[1] функция или просто текущий каталог . [2] Когда процесс ссылается на файл, используя простое имя файла или относительный путь (в отличие от файла, обозначенного полным путем от корневого каталога ), ссылка интерпретируется относительно рабочего каталога процесса. Например, процесс с рабочим каталогом /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 и т.д.) [3] можно использовать в сценариях, поэтому не нужно запускать внешнюю программу. Microsoft Windows Ярлыки файлов имеют возможность хранить рабочий каталог.
COMMAND.COM в DR-DOS 7.02 и выше обеспечивает ECHOS, вариант ECHO команда, опускающая завершающий перевод строки. [4] [3] Это можно использовать для создания временного пакетного задания, сохраняющего рабочий каталог в переменной среды, например CD для дальнейшего использования, например:
ECHOS SET CD=> SETCD.BAT CHDIR >> SETCD.BAT CALL SETCD.BAT DEL SETCD.BAT
Альтернативно, в многопользовательской DOS и DR-DOS 7.02 и выше различные внутренние и внешние команды поддерживают параметр /B (для «Пачки»). [5] Это изменяет вывод команд, чтобы он стал пригодным для прямого ввода в командной строке (при перенаправлении его в пакетный файл) или использования в качестве параметра для других команд (используя его в качестве входных данных для другой команды). Где CHDIR выдаст путь к каталогу, например C:\DOS
, команда типа CHDIR /B выдал бы CHDIR C:\DOS
вместо этого, чтобы CHDIR /B > RETDIR.BAT создаст временное пакетное задание, позволяющее вернуться в этот каталог позже.
Рабочий каталог также отображается с помощью $P[номер 2] токен PROMPT
команда [6] Чтобы приглашение было коротким даже внутри глубоких структур подкаталогов, DR-DOS 7.07 COMMAND.COM поддерживает $W[номер 2] токен для отображения только самого глубокого уровня подкаталога. Итак, где по умолчанию PROMPT $P$G приведет к тому, что C:\DOS>
или C:\DOS\DRDOS>
, а PROMPT $N:$W$G вместо этого уступил бы C:DOS>
и C:DRDOS>
, соответственно. Аналогичная установка (с использованием $W и $w был добавлен в 4DOS . ) также [3]
В DOS абсолютные пути к рабочим каталогам всех логических томов хранятся внутри структуры данных, напоминающей массив, называемой текущей структурой каталогов (CDS), которая динамически выделяется во время загрузки для хранения необходимого количества слотов для всех логических томов. диски (или как определено LASTDRIVE ). [7] [8] [9] Эта структура накладывает ограничение на длину полного пути каждого рабочего каталога в 66 символов и, таким образом, неявно ограничивает максимально возможную глубину подкаталогов. [7] DOS Plus и более ранние выпуски DR DOS (вплоть до DR DOS 6.0 , с BDOS 6.7 в 1991 году) не имели такого ограничения. [8] [10] [3] из-за их реализации с использованием эмуляции DOS поверх ядра, производного от Concurrent DOS (и, следовательно, CP / M-86 ), которое внутренне организовывало подкаталоги как относительные ссылки на родительские каталоги, а не как абсолютные пути. [8] [10] Поскольку PalmDOS (с BDOS 7.0) и DR DOS 6.0 (обновление 1992 года с BDOS 7.1) и выше перешли на использование CDS для максимальной совместимости с программами DOS, они столкнулись с теми же ограничениями, что и в других DOS. [8] [10]
В языках программирования
[ редактировать ]Большинство языков программирования предоставляют интерфейс к функциям файловой системы операционной системы, включая возможность устанавливать (изменять) рабочий каталог программы.
В C функция POSIX языке chdir()
вызывает системный вызов , который меняет рабочий каталог. [11] Его аргументом является текстовая строка с путем к новому каталогу, абсолютным или относительным к старому. Там, где это возможно, процесс может вызвать его для установки своего рабочего каталога.
Подобные функции есть и в других языках. Например, в Visual Basic это обычно пишется CHDIR()
.
В Java рабочий каталог можно получить через команду java.nio.file.Path
интерфейс или через java.io.File
сорт. Рабочий каталог изменить нельзя. [12]
См. также
[ редактировать ]- Домашний каталог
- Корневой каталог
- Каталог
- chroot (системы Linux)
- Нагрузочный привод (другая, но родственная концепция)
- Длинное имя файла (LFN)
Примечания
[ редактировать ]- ^ Существуют операционные системы , которые поддерживают иерархическую файловую систему , но не имеют понятия «рабочий каталог»; например, Texas Instruments от DX10 , используемый в серии TI-990 .
- ^ Jump up to: а б Точно так же, как $O работает как альтернатива $P под DR-DOS COMMAND.COM , $W имеет псевдоним $Y он подавляется за исключением того, что на дискетах , чтобы избежать критических сообщений об ошибках или задержек при попытке получить путь к невставленной дискете.
Ссылки
[ редактировать ]- ^
- ^ «Microsoft Windows – функция SetCurrentDirectory» . Майкрософт . Архивировано из оригинала 27 мая 2018 г. Проверено 27 мая 2017 г.
- ^ Jump up to: а б с д Братья Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Матиас Р.; Дай, Чарльз Э.; Георгиев, Лучезар И. (27 февраля 2002 г.). Онлайн-справка по 4DOS 8.00 .
- ^ DR-DOS 7.03 WHATSNEW.TXT — Изменения с DR-DOS 7.02 на DR-DOS 7.03 . Кальдера, Инк. 24 декабря 1998 г. Архивировано из оригинала 08 апреля 2019 г. Проверено 08 апреля 2019 г.
- ^ Интернет-документация CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 10 февраля 1997 г. ПОМОЩЬ.HLP.
- ^ Руководство пользователя Caldera DR-DOS 7.02 . Caldera, Inc. , 1998 г. [1993, 1997]. Архивировано из оригинала 4 ноября 2016 г. Проверено 10 августа 2013 г.
- ^ Jump up to: а б Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (1994) [ноябрь 1993 г.]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . ISBN 0-201-63287-Х . ISBN 978-0-201-63287-3 . (xviii+856+vi страниц, 3,5-дюймовая дискета) Исправления: [1] [2]
- ^ Jump up to: а б с д Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей . MPDOSTIP (на немецком языке) (3-е изд.). Архивировано из оригинала 10 сентября 2017 г. Проверено 6 августа 2014 г. (Примечание. NWDOSTIP.TXT — это обширная работа по Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних устройств. Это часть еще более обширной работы автора.
MPDOSTIP.ZIP
Коллекция сохранялась до 2001 года и в то время распространялась на многих сайтах. Предоставленная ссылка указывает на более старую версию файла, преобразованную в HTML.NWDOSTIP.TXT
файл.) [3] - ^ Браун, Ральф Д .; и др., ред. (16 июля 2000 г.). «Список прерываний Ральфа Брауна» (61-е изд.). ИНТЕР61 .
- ^ Jump up to: а б с Пол, Матиас Р. (07.06.1997) [апрель 1994 г.]. «Глава 1.3.xi: Слишком длинные пути». NWDOS7UN.TXT — Сводка документированных и недокументированных возможностей Novell DOS 7 . МПДОСТИП (на немецком языке). Архивировано из оригинала 07.11.2016 . Проверено 7 ноября 2016 г.
- ^ «Базовые спецификации открытой группы, выпуск 6 и IEEE Std 1003.1» (выпуск 6, изд. 2004 г.). IEEE группа и Открытая . 2004 [2001]. Архивировано из оригинала 9 февраля 2018 г. Проверено 27 мая 2018 г.
- ^ «JDK-4045688: добавьте chdir или эквивалентное понятие изменения рабочего каталога» . База данных ошибок . Oracle ( Сан Микросистемс ). 18 августа 2008 г. [17 апреля 1997 г.]. Архивировано из оригинала 19 октября 2017 г. Проверено 20 февраля 2011 г.
Дальнейшее чтение
[ редактировать ]- Чен, Раймонд (11 октября 2010 г.). «Почему у каждого диска есть свой текущий каталог?» . Новая старая вещь . Майкрософт . Архивировано из оригинала 12 апреля 2016 г. Проверено 27 мая 2017 г.
- Чен, Раймонд (6 мая 2010 г.). «Что это за странные переменные среды =C:?» . Новая старая вещь . Майкрософт . Архивировано из оригинала 27 мая 2018 г. Проверено 27 мая 2017 г.
Внешние ссылки
[ редактировать ]- Рабочий каталог (wd) на Github — пакет программного обеспечения, который отслеживает часто используемые каталоги в bash . сеансе