cd command, also known as
chdir (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.
|Developer(s)||AT&T Bell Laboratories, MetaComCo, Microsoft, IBM, Digital Research, Novell, Hewlett-Packard, JP Software, ReactOS Contributors|
|Operating system||Unix, Unix-Like, DOS, FlexOS, OS/2, TRIPOS, Windows, MPE/iX, ReactOS, KolibriOS, SymbOS, DexOS|
The command has been implemented in operating systems such as Unix, DOS, IBM OS/2, MetaComCo TRIPOS, AmigaOS (where if a bare path is given, cd is implied), Microsoft Windows, ReactOS, and Linux. On MS-DOS, it is available in versions 2 and later. DR DOS 6.0 also includes an implementation of the
chdir commands. The command is also available in the open source MS-DOS emulator DOSBox and in the EFI shell. It is named
chdir in HP MPE/iX. The command is analogous to the Stratus OpenVOS
cd is frequently included built directly into a command-line interpreter. This is the case in most of the Unix shells (Bourne shell, tcsh, bash, etc.),
cmd.exe on Microsoft Windows NT/2000+ and Windows PowerShell on Windows 7+ and
COMMAND.COM on DOS/ Microsoft Windows 3.x-9x/ME.
Command line shells on Windows usually use the Windows API to change the current working directory, whereas on Unix systems
cd calls the
chdir() POSIX C function. This means that when the command is executed, no new process is created to migrate to the other directory as is the case with other commands such as ls. Instead, the shell itself executes this command. This is because, when a new process is created, child process inherits the directory in which the parent process was created. If the
cd command inherits the parent process' directory, then the objective of the command cd will never be achieved.
Windows PowerShell, Microsoft's object-oriented command line shell and scripting language, executes the
cd command (cmdlet) within the shell's process. However, since PowerShell is based on the .NET Framework and has a different architecture than previous shells, all of PowerShell's cmdlets like
rm etc. run in the shell's process. Of course, this is not true for legacy commands which still run in a separate process.
A directory is a logical section of a file system used to hold files. Directories may also contain other directories. The
cd command can be used to change into a subdirectory, move back into the parent directory, move all the way back to the root directory or move to any given directory.
Consider the following subsection of a Unix filesystem, which shows a user's home directory (represented as
~) with a file,
text.txt, and three subdirectories.
If the user's current working directory is the home directory (
~), then entering the command
ls followed by
cd games might produce the following transcript:
user@wikipedia:~$ ls workreports games encyclopedia text.txt user@wikipedia:~$ cd games user@wikipedia:~/games$
The user is now in the "games" directory.
A similar session in DOS (though the concept of a "home directory" may not apply, depending on the specific version) would look like this:
C:\> dir workreports <DIR> Wed Oct 9th 9:01 games <DIR> Tue Oct 8th 14:32 encyclopedia <DIR> Mon Oct 1st 10:05 text txt 1903 Thu Oct10th 12:43 C:\> cd games C:\games>
DOS maintains separate working directories for each lettered drive, and also has the concept of a current working drive. The
cd command can be used to change the working directory of the working drive or another lettered drive. Typing the drive letter as a command on its own changes the working drive, e.g.
cd with the
/d switch may be used to change the working drive and that drive's working directory in one step.
Modern versions of Windows simulate this behaviour for backwards compatibility under CMD.EXE.
Note that executing
cd from the command line with no arguments has different effects in different operating systems. For example, if
cd is executed without arguments in DOS, OS/2, or Windows, the current working directory is displayed (equivalent to Unix
cd is executed without arguments in Unix, the user is returned to the home directory.
cd command within a script or batch file also has different effects in different operating systems. In DOS, the caller's current directory can be directly altered by the batch file's use of this command. In Unix, the caller's current directory is not altered by the script's invocation of the
cd command. This is because in Unix, the script is usually executed within a subshell.
cdby itself or
cd ~will always put you in your home directory.
cd .will leave you in the same directory you are currently in (i.e. your current directory won't change). This can be useful if your shell's internal code can't deal with the directory you are in being recreated; running
cd .will place your shell in the recreated directory.
cd ~usernamewill put you in username's home directory.
cd dir(without a
/) will put you in a subdirectory; for example, if you are in
cd binwill put you in
cd /binputs you in
cd ..will move you up one directory. So, if you are
cd ..moves you to
cd ../..moves you to
/usr(i.e. up two levels). You can use this indirection to access subdirectories too. So, from
/usr/bin/tmp, you can use
cd ../../localto go to
cd -will switch you to the previous directory. For example, if you are in
/usr/bin/tmp, and go to
/etc, you can type
cd -to go back to
/usr/bin/tmp. You can use this to toggle back and forth between two directories.
DOS, OS/2, Windows, ReactOS
- no attributes print the full path of the current directory.
-pPrint the final directory stack, just like dirs.
-nEntries are wrapped before they reach the edge of the screen.
-ventries are printed one per line, preceded by their stack positions.
cd\(DOS and Windows only) returns to the root dir. Consequently, command
cd\subdiralways takes the user to the named subdirectory on the root directory, regardless of where they are located when the command is issued.
Interpreters other than an operating systems shell
In the File Transfer Protocol, the respective command is spelled
CWD in the control stream, but is available as
cd in most client command-line programs. Some clients also have the
lcd for changing the working directory locally.
The numerical computing environments MATLAB and GNU Octave include a
function with similar functionality. The command also pertains to command-line interpreters of various other application software.
- Wolverton, Van (2003). Running MS-DOS Version 6.22 (20th Anniversary Edition), 6th Revised edition. Microsoft Press. ISBN 0-7356-1812-7.
- DR DOS 6.0 User Guide Optimisation and Configuration Tips
- "EFI Shells and Scripting". Intel. Retrieved 2013-09-25.
- MPE/iX Command Reference Manual
- Why does each drive have its own current directory?
- Wolverton, Van (1990). MS-DOS Commands: Microsoft Quick Reference, 4th Revised edition. Microsoft Press. ISBN 978-1556152894.
- John Paul Mueller (2007). Windows Administration at the Command Line for Windows Vista, Windows 2003, Windows XP, and Windows 2000. John Wiley & Sons. ISBN 978-0470165799.
- Barrett, Daniel J. (2012). Macintosh Terminal Pocket Guide: Take Command of Your Mac. O'Reilly. ISBN 978-1449328986.
|Wikibooks has a book on the topic of: Guide to Windows Commands|
- Windows XP > Command-line reference A-Z > Chdir (Cd) from Microsoft TechNet
cd: change the working directory – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group