В обчислювальній техніці робочий каталог — це каталог файлової системи, відносно якого задається відносний шлях.
У середовищі командного рядка користувач часто працює з файлами в робочому каталозі або відносно нього. Стан системи, який визначає робочий каталог, забезпечує зручний спосіб визначення контексту роботи. Користувачі можуть використовувати концептуально простіші й зазвичай коротші шляхи замість того, щоб щоразу використовувати абсолютні шляхи. Наприклад, для робочого каталогу /home/user/data в Unix-подібній системі назва файлу foo.txt (відносний шлях) відповідає абсолютному шляху /home/user/data/foo.txt. Стан системи для робочого каталогу часто також застосовується в графічному інтерфейсі користувача (GUI), але часто не є корисним, оскільки середовище GUI підтримує контекст каталогу іншим способом.
Як функціональна можливість, робочі каталоги відрізняються залежно від середовища, але мають деякі спільні типові властивості. Зазвичай кожен процес має окремий робочий каталог, що дає змогу користувачам мати різні робочі каталоги для кожної оболонки, запущеної в операційній системі. Хоча ця можливість є поширеною в системах, що надають ієрархічну файлову систему, вона не є обов'язковою.
Альтернативні назви включають поточний робочий каталог (, CWD) та просто поточний каталог.
Використання Зміна каталогу Багато оболонок надають команду cd для встановлення робочого каталогу. Деякі системи надають команду з іншою назвою. Наприклад, є альтернативною назвою у DOS/Windows.
Виведення Команди для виведення робочого каталогу відрізняються більше, ніж команди для його встановлення. Зазвичай командна оболонка Unix надає команду pwd (скорочення від print working directory), яка виводить абсолютний шлях до робочого каталогу. Еквівалентною командою в DOS/Windows є cd без аргументів. Використання cd без аргументів у Unix-подібних системах зазвичай встановлює робочий каталог у домашній каталог користувача.
Сценарії Для спрощення розробки сценаріїв деякі оболонки надають змінну, що містить шлях до робочого каталогу. Зазвичай Unix-подібна оболонка надає змінну середовища з назвою PWD. Оболонки Windows COMMAND.COM і cmd.exe надають псевдозмінну середовища з назвою CD. Оболонки 4DOS, 4OS2 і 4NT надають _CWD, _CWDS, _CWP і _CWPS.
Ярлик Windows У Windows ярлик файлу може вказувати робочий каталог, який використовуватиметься під час активації цільового об'єкта ярлика.
Командний рядок Робочий каталог відображається маркером $P команди prompt у DOS. Щоб скоротити запрошення в глибокому каталозі, COMMAND.COM у DR-DOS 7.07 підтримує маркер $W, який відображає лише найглибший рівень підкаталогу. Так, якщо стандартна команда PROMPT $P$G давала, наприклад, C:\DOS> або C:\DOS\DRDOS>, то PROMPT $N:$W$G натомість давала б C:DOS> і C:DRDOS> відповідно. Подібну можливість (із використанням $W і $w) також було додано до 4DOS.
Стан для кожного диска DOS У DOS абсолютний шлях до робочого каталогу для кожного логічного тому зберігається як поточна структура каталогу (CDS). Вона виділяється під час завантаження, з окремим слотом для кожного логічного диска (або відповідно до LASTDRIVE). Ця структура накладає обмеження довжини 66 символів на повний шлях кожного робочого каталогу й, таким чином, неявно також обмежує максимально можливу глибину підкаталогів.
DOS Plus і старіші випуски DR DOS (до DR DOS 6.0, з BDOS 6.7 у 1991 році) такого обмеження не мали, оскільки їхні реалізації використовували емуляцію DOS поверх ядра, похідного від Concurrent DOS (і, відповідно, CP/M-86), яке внутрішньо організовувало підкаталоги як відносні посилання на батьківські каталоги, а не як абсолютні шляхи. Оскільки PalmDOS (з BDOS 7.0) і DR DOS 6.0 (оновлення 1992 року з BDOS 7.1) та пізніші версії також перейшли на використання CDS для максимальної сумісності з програмами DOS, вони зіткнулися з тими самими обмеженнями, що й інші DOS.
Доступ мовами високого рівня Більшість середовищ мов програмування надають прикладний програмний інтерфейс для файлової системи, який дає змогу отримувати й встановлювати робочий каталог.
Визначена POSIX функція chdir() (доступна через C та багато мов, що взаємодіють із нею) є системним викликом, який змінює робочий каталог. Її аргументом є текстовий рядок, що є шляхом до цільового каталогу — абсолютним або відносним до поточного значення.
Visual Basic надає таку саму функціональність через функцію з такою самою назвою.
У Java робочий каталог можна отримати через інтерфейс java.nio.file.Path або клас java.io.File. Змінити робочий каталог неможливо.
Приклади 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 (від «Batch», «пакетний»). Він змінює виведення команд так, щоб воно було придатним для безпосереднього введення в командному рядку (при перенаправленні його до пакетного файла) або використання як параметра для інших команд (шляхом використання його як вхідних даних для іншої команди). Якщо CHDIR виводила б шлях до каталогу на кшталт C:\DOS, то команда CHDIR /B натомість вивела б CHDIR C:\DOS, тому CHDIR /B > RETDIR.BAT створила б тимчасове пакетне завдання, яке дозволяє пізніше повернутися до цього каталогу.
Див. також chroot Домашній каталог Кореневий каталог
Примітки
(xviii+856+vi pages, 3.5-inch floppy) Errata: (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.)