Введение
Команда, также известная как `cd` (change directory), — это команда командной строки, используемая для изменения текущего рабочего каталога в различных операционных системах. Она может использоваться в скриптах оболочки и пакетных файлах.
The command, also known as (change directory), is a command line shell command used to change the current working directory in various operating systems. It can be used in shell scripts and batch files.
Реализация
Команда была реализована в операционных системах, таких как 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`.
will switch the user to the previous directory. For example, if they are in , and go to , they can type to go back to The user can use this to toggle back and forth between two directories without pushd and popd.
DOS, OS/2, Windows, ReactOS
без атрибутов выводит полный путь текущего каталога. Выводит окончательный стек каталогов, аналогично команде dirs. Записи обрезаются перед достижением края экрана. Записи выводятся по одной в строке, с указанием их позиции в стеке. (только для DOS и Windows) возвращает в корневой каталог. Следовательно, команда всегда переводит пользователя в указанный подкаталог в корневом каталоге, независимо от текущего местоположения при вводе команды.