Введение

Команда, также известная как `cd` (change directory), — это команда командной строки, используемая для изменения текущего рабочего каталога в различных операционных системах. Она может использоваться в скриптах оболочки и пакетных файлах.

Реализация

Команда была реализована в операционных системах, таких как Unix, DOS, IBM OS/2, MetaComCo TRIPOS, AmigaOS (где, если указан только путь, подразумевается cd), Microsoft Windows, ReactOS и Linux. На MS DOS она доступна в версиях 2 и более поздних. DR DOS 6.0 также включает в себя реализацию команд и . Команда также доступна в эмуляторе MS DOS DOSBox с открытым исходным кодом и в оболочке EFI. В HP MPE/iX она называется . Команда аналогична команде Stratus OpenVOS . Часто она встроена непосредственно в интерпретатор командной строки. Это справедливо для большинства оболочек Unix (Bourne shell, tcsh, bash и т. д.), cmd.exe в Microsoft Windows NT/2000+ и Windows PowerShell в Windows 7+ и COMMAND.COM на DOS/Microsoft Windows 3.x 9x/ME. Системный вызов, реализующий команду в большинстве операционных систем, – , определённый стандартом POSIX. Командные оболочки Windows обычно используют Windows API для изменения текущего рабочего каталога, а в системах Unix – вызывают функцию POSIX C. Это означает, что при выполнении команды не создаётся новый процесс для перехода в другую директорию, как это происходит с другими командами, например ls. Вместо этого, команда выполняется самой оболочкой. Это связано с тем, что при создании нового процесса дочерний процесс наследует каталог, в котором был создан родительский процесс. Если команда унаследует каталог родительского процесса, то цель команды cd не будет достигнута. Windows PowerShell, объектно-ориентированная командная строка и язык сценариев Microsoft, выполняет команду (cmdlet) в процессе самой оболочки. Однако, поскольку PowerShell основан на .NET Framework и имеет архитектуру, отличную от предыдущих оболочек, все командлеты PowerShell, такие как , и т. д., выполняются в процессе оболочки. Разумеется, это не относится к устаревшим командам, которые по-прежнему работают в отдельном процессе.

Unix, Unix-подобный

самостоятельно или всегда помещает пользователя в его домашний каталог. оставит пользователя в текущем каталоге (т.е. текущий каталог не изменится). Это может быть полезно, если внутренний код оболочки пользователя не может корректно работать с воссозданным каталогом; запуск `cd` поместит оболочку пользователя в воссозданный каталог. `cd ~username` переведёт пользователя в домашний каталог указанного пользователя. `cd` (без аргумента) переведёт пользователя в подкаталог; например, если пользователь находится в `/path`, ввод `cd subdir` переведёт его в `/path/subdir`, а `cd ..` переместит пользователя на один уровень вверх. Если пользователь находится в `/path/to/dir`, то `cd ..` переместит его в `/path/to`, а `cd ../..` – в `/path` (т.е. на два уровня выше). Пользователь может использовать эту возможность для доступа к подкаталогам. Например, находясь в `/path/to/dir`, можно использовать `cd subdir/another` для перехода в `/path/to/dir/subdir/another`. `cd -` переключит пользователя в предыдущий каталог. Например, если пользователь находится в `/path` и переходит в `/path/to/dir`, он может ввести `cd -` для возврата в `/path`. Пользователь может использовать это для быстрого переключения между двумя каталогами без использования команд `pushd` и `popd`.

DOS, OS/2, Windows, ReactOS

без атрибутов выводит полный путь текущего каталога. Выводит окончательный стек каталогов, аналогично команде dirs. Записи обрезаются перед достижением края экрана. Записи выводятся по одной в строке, с указанием их позиции в стеке. (только для DOS и Windows) возвращает в корневой каталог. Следовательно, команда всегда переводит пользователя в указанный подкаталог в корневом каталоге, независимо от текущего местоположения при вводе команды.