Рабочий каталог - Working directory

В вычисление, то рабочий каталог из обработать это каталог иерархической файловая система, если есть,[nb 1] динамически связаны с каждым процессом. Иногда его называют текущий рабочий каталог (CWD), например то BSD getcwd (3) функция, или просто Текущий каталог.[1] Когда процесс обращается к файлу, используя простое имя файла или относительное дорожка (в отличие от файла, обозначенного полным путем от корневая директория ) ссылка интерпретируется относительно рабочего каталога процесса. Так, например, процесс с рабочим каталогом / кроличья обувь который просит создать файл foo.txt в конечном итоге создаст файл /rabbit-shoes/foo.txt.

В операционных системах

В большинстве компьютерных файловых систем каждый каталог имеет запись (обычно с именем "."), который указывает на сам каталог.

В большинстве ДОС и UNIX командные оболочки, а также в Майкрософт Виндоус интерпретаторы командной строки cmd.exe и Windows PowerShell, рабочий каталог можно изменить с помощью компакт диск или CHDIR команды. В Оболочки Unix, то pwd команда выводит полный путь к рабочему каталогу; эквивалентная команда в DOS и Windows компакт диск или CHDIR без аргументы (тогда как в Unix компакт диск без аргументов возвращает пользователя к его / ее домашний каталог ).

В переменная окружения PWD (в оболочках Unix / Linux) или переменные псевдо-среды компакт диск (в Windows COMMAND.COM и cmd.exe, но не в OS / 2 и DOS), или _CWD, _CWDS, _CWP и _CWPS (под 4ДОС, 4OS2, 4NT так далее.)[2] могут использоваться в сценариях, поэтому нет необходимости запускать внешнюю программу. Майкрософт Виндоус ярлыки файлов есть возможность хранить рабочий каталог.

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

ECHOS SET CD => SETCD.BATCHDIR >> SETCD.BATCALL SETCD.BATDEL SETCD.BAT

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

Рабочий каталог также отображается $ P[nb 2] знак НЕЗАМЕДЛИТЕЛЬНЫЙ команда [5] Чтобы запрос был коротким даже внутри структур глубоких подкаталогов, DR-DOS 7.07 COMMAND.COM поддерживает $ W[nb 2] токен для отображения только самого глубокого уровня подкаталога. Итак, где по умолчанию ЗАПРОСИТЬ $ P $ G приведет к примеру в C: DOS> или C: DOS DRDOS>, а ЗАПРОСИТЬ $ N: $ W $ G вместо этого даст C: DOS> и C: DRDOS>соответственно. Аналогичная установка (с использованием $ W и $ w) был добавлен в 4ДОС также.[2]

В DOS абсолютные пути к рабочим каталогам всех томов хранятся внутри в виде массива данных, называемого структурой данных. Текущая структура каталогов (CDS ), который динамически выделяется во время загрузки для хранения необходимого количества слотов для всех дисков (или как определено LASTDRIVE.[6][7] Эта структура накладывает ограничение на длину 66 символов на полный путь каждого рабочего каталога и, таким образом, неявно также ограничивает максимально возможную глубину подкаталогов.[6] DOS Plus и более старые выпуски DR DOS (до DR DOS 6.0 в 1991 г.) не имели такого ограничения[7][8][2] из-за их реализации с использованием эмуляции DOS поверх Параллельная DOS - (и поэтому CP / M-86 -) производное ядро, в котором подкаталоги организованы внутри как относительные ссылки на родительские каталоги, а не как абсолютные пути.[7][8] поскольку PalmDOS и DR DOS 6.0 (с 1992 г.) и выше перешли на использование CDS для максимальной совместимости с программами DOS, они столкнулись с теми же ограничениями, что и в других DOS.[7][8]

В языках программирования

Наиболее языки программирования предоставить интерфейс к файловая система функции операционной системы, в том числе возможность установить (изменить) рабочий каталог программы.

в Язык C, то POSIX функция chdir () влияет на системный вызов который меняет рабочий каталог.[9] Его аргумент - текстовая строка с путем к новому каталогу, абсолютным или относительным к старому. Если возможно, он может быть вызван процессом для установки своего рабочего каталога.

Та же функция есть и на других языках. В Visual Basic обычно пишется CHDIR ().

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

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

Заметки

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

использованная литература

  1. ^ «Microsoft Windows - функция SetCurrentDirectory». Microsoft. В архиве из оригинала на 2018-05-27. Получено 2017-05-27.
  2. ^ а б c d Братья Хардин; Роусон, Том; Конн, Рекс К.; Пол, Маттиас Р .; Краситель, Чарльз Э .; Георгиев, Лучезар И. (27.02.2002). Онлайн-справка 4DOS 8.00.
  3. ^ DR-DOS 7.03 WHATSNEW.TXT - Изменения с DR-DOS 7.02 на DR-DOS 7.03. Caldera, Inc. 1998-12-24. В архиве из оригинала на 2019-04-08. Получено 2019-04-08.
  4. ^ CCI Multiuser DOS 7.22 GOLD Онлайн-документация. Concurrent Controls, Inc. (CCI). 1997-02-10. HELP.HLP.
  5. ^ Caldera DR-DOS 7.02 Руководство пользователя. Caldera, Inc. 1998 [1993, 1997]. Архивировано из оригинал на 2016-11-04. Получено 2013-08-10.
  6. ^ а б Шульман, Эндрю; Браун, Ральф Д.; Макси, Дэвид; 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]
  7. ^ а б c d Пол, Матиас Р. (1997-07-30) [1994-05-01]. NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробностями, исправлениями и обходными путями Blick auf undokumentierte. MPDOSTIP. Выпуск 157 (на немецком языке) (3-е изд.). В архиве из оригинала на 2017-09-10. Получено 2014-08-06. (NB. NWDOSTIP.TXT - это комплексная работа по Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних компонентов. Это часть еще более обширной работы автора. MPDOSTIP.ZIP Коллекция сохранялась до 2001 г. и распространялась на многих сайтах того времени. Приведенная ссылка указывает на старую версию HTML-конвертированного NWDOSTIP.TXT файл.) [3]
  8. ^ а б c Пол, Матиас Р. (1997-06-07) [апрель 1994]. «Глава 1.3.xi: Überlange Pfade». NWDOS7UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP. Выпуск 85 (на немецком языке). В архиве из оригинала от 07.11.2016. Получено 2016-11-07.
  9. ^ "Базовые спецификации Open Group, выпуск 6 и IEEE Std 1003.1" (Выпуск 6, 2004 г.). В IEEE и Открытая группа. 2004 [2001]. В архиве из оригинала на 2018-02-09. Получено 2018-05-27.
  10. ^ "JDK-4045688: Добавить chdir или аналогичное понятие изменения рабочего каталога". База данных ошибок. Oracle (Sun Microsystems ). 2008-08-18 [1997-04-17]. В архиве из оригинала на 19.10.2017. Получено 2011-02-20.

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

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