stringtranslate.com

Рабочий каталог

В вычислениях рабочий каталог процесса — это каталог иерархической файловой системы , если таковая имеется, [nb 1], динамически связанной с процессом. Иногда его называют текущим рабочим каталогом (CWD) , например, функцией BSD [1] , или просто текущим каталогом . [2] Когда процесс ссылается на файл, используя простое имя файла или относительный путь (в отличие от файла, обозначенного полным путем от корневого каталога ), ссылка интерпретируется относительно рабочего каталога процесса. Так, например, процесс с рабочим каталогом , который запрашивает создание файла, в конечном итоге создаст файл . getcwd/rabbit-shoesfoo.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в 4DOS , 4OS2 , 4NT и т. д.). .) [3] можно использовать в скриптах, поэтому не нужно запускать внешнюю программу. Ярлыки файлов Microsoft Windows имеют возможность хранить рабочий каталог._CWP_CWPS

COMMAND.COM в DR-DOS 7.02 и выше предоставляет ECHOSвариант команды ECHOбез завершающего перевода строки. [4] [3] Это можно использовать для создания временного пакетного задания, сохраняющего рабочий каталог в переменной среды CD, например:

ECHOS SET CD=> SETCD.BATCHDIR >> SETCD.BATВЫЗОВ SETCD.BATУДАЛЕНИЕ SETCD.BAT

Альтернативно, в многопользовательской DOS и DR-DOS 7.02 и выше различные внутренние и внешние команды поддерживают параметр /B(для «Пакетной обработки»). [5] Это изменяет вывод команд, чтобы он стал пригодным для прямого ввода в командной строке (при перенаправлении его в пакетный файл) или использования в качестве параметра для других команд (использование его в качестве входных данных для другой команды). Если CHDIRбудет указан путь к каталогу, например , вместо него будет выдана C:\DOSкоманда типа , так что будет создано временное пакетное задание, позволяющее вернуться в этот каталог позже.CHDIR /BCHDIR C:\DOSCHDIR /B > RETDIR.BAT

Рабочий каталог также отображается с помощью токена $P[nb 2] команды PROMPT[ 6] . Чтобы приглашение было коротким даже внутри глубоких структур подкаталогов, DR-DOS 7.07 COMMAND.COM поддерживает токен $W[nb 2] для отображения только самый глубокий уровень подкаталога. Таким образом, там, где значение по умолчанию PROMPT $P$Gприведет к fe в C:\DOS>или C:\DOS\DRDOS>, a PROMPT $N:$W$Gвместо этого приведет к C:DOS>и C:DRDOS>, соответственно. Аналогичная возможность (с использованием $Wи $w) была добавлена ​​и в 4DOS . [3]

В DOS абсолютные пути к рабочим каталогам всех логических томов хранятся внутри структуры данных, напоминающей массив, называемой Current Directory Structure (CDS), которая динамически выделяется во время загрузки для хранения необходимого количества слотов для всех логических томов. диски (или как определено LASTDRIVE ). [7] [8] [9] Эта структура накладывает ограничение на длину полного пути каждого рабочего каталога в 66 символов и, таким образом, неявно также ограничивает максимально возможную глубину подкаталогов. [7] DOS Plus и более ранние выпуски DR DOS (вплоть до DR DOS 6.0 , с BDOS 6.7 в 1991 году) не имели такого ограничения [8] [10] [3] из-за их реализации с использованием эмуляции DOS поверх параллельного 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 выполняет системный вызов , который изменяет рабочий каталог. [11] Его аргументом является текстовая строка с путем к новому каталогу, абсолютным или относительным к старому. Там, где это возможно, процесс может вызвать его для установки своего рабочего каталога.chdir()

Подобные функции есть и в других языках. Например, в Visual Basic обычно пишется CHDIR().

В отличие от функции Windows API или POSIX C , ни язык программирования Java , ни виртуальная машина Java не поддерживают chdir()напрямую; [ нужны разъяснения ] запрос на изменение оставался открытым более десяти лет, пока команда, ответственная за Java, рассматривала альтернативы, хотя к 2008 году запрос был отклонен после того, как была введена лишь ограниченная поддержка (влияя сначала java.lang.Runtimeи позже java.lang.ProcessBuilder). [12]

Смотрите также

Примечания

  1. ^ Существуют операционные системы , которые поддерживают иерархическую файловую систему , но не имеют понятия «рабочий каталог»; например, DX10 от Texas Instruments , используемый в серии TI-990 .
  2. ^ ab Аналогично тому, как работает в $Oкачестве альтернативы DR-DOS COMMAND.COM , имеет псевдоним, за исключением того, что он подавляется на дискетах во избежание сообщений о критических ошибках или задержек при попытке получить путь к невставленному дискете. гибкий.$P $W$Y

Рекомендации

  1. ^ getcwd(3)
  2. ^ «Microsoft Windows – функция SetCurrentDirectory» . Майкрософт . Архивировано из оригинала 27 мая 2018 г. Проверено 27 мая 2017 г.
  3. ^ abcd Brothers, Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Матиас Р.; Дай, Чарльз Э.; Георгиев, Лучезар И. (27 февраля 2002 г.). Онлайн-справка по 4DOS 8.00 .
  4. ^ DR-DOS 7.03 WHATSNEW.TXT — Изменения с DR-DOS 7.02 на DR-DOS 7.03. Кальдера, Инк. 24 декабря 1998 г. Архивировано из оригинала 08 апреля 2019 г. Проверено 08 апреля 2019 г.
  5. ^ Интернет-документация CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 10 февраля 1997 г. ПОМОЩЬ.HLP.
  6. ^ Руководство пользователя Caldera DR-DOS 7.02. Caldera, Inc., 1998 г. [1993, 1997]. Архивировано из оригинала 4 ноября 2016 г. Проверено 10 августа 2013 г.
  7. ^ аб Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (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]
  8. ^ abcd Пол, Матиас Р. (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]
  9. ^ Браун, Ральф Д .; и др., ред. (16 июля 2000 г.). «Список прерываний Ральфа Брауна» (61-е изд.). ИНТЕР61 .
  10. ^ abc Пол, Матиас Р. (1997-06-07) [апрель 1994 г.]. «Глава 1.3.xi: Überlange Pfade». NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undocumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (на немецком языке). Архивировано из оригинала 07.11.2016 . Проверено 7 ноября 2016 г.
  11. ^ «Базовые спецификации открытой группы, выпуск 6 и стандарт IEEE 1003.1» (выпуск 6, изд. 2004 г.). IEEE и Открытая группа . 2004 [2001]. Архивировано из оригинала 9 февраля 2018 г. Проверено 27 мая 2018 г.
  12. ^ «JDK-4045688: Добавьте chdir или эквивалентное понятие изменения рабочего каталога». База данных ошибок . Oracle ( Сан Микросистемс ). 18 августа 2008 г. [17 апреля 1997 г.]. Архивировано из оригинала 19 октября 2017 г. Проверено 20 февраля 2011 г.

дальнейшее чтение

Внешние ссылки