The command, also known as (change directory), is a
command-line shell command used to change the current
working directory in various
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s. It can be used in
shell scripts and
batch files.
Implementations
The command has been implemented in operating systems such as
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
,
DOS,
IBM OS/2,
MetaComCo TRIPOS
At the University of Cambridge, a Tripos (, plural 'Triposes') is any of the examinations that qualify an undergraduate for a bachelor's degree or the courses taken by a student to prepare for these. For example, an undergraduate studying mathe ...
,
AmigaOS (where if a bare
path is given, cd is ''implied''),
Microsoft Windows,
ReactOS, and
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
. On
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few oper ...
, it is available in versions 2 and later.
DR DOS 6.0 also includes an implementation of the and commands.
The command is also available in the
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
MS-DOS
emulator DOSBox and in the
EFI shell.
It is named in
HP MPE/iX
MPE (Multi-Programming Executive) is a discontinued business-oriented mainframe computer real-time operating system made by Hewlett-Packard. While initially a mini-mainframe, the final high-end systems supported 12 CPUs and over 2000 simultaneous ...
. The command is analogous to the
Stratus OpenVOS command.
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
Windows NT is a proprietary graphical operating system produced by Microsoft, the first version of which was released on July 27, 1993. It is a processor-independent, multiprocessing and multi-user operating system.
The first version of Wi ...
/
2000
File:2000 Events Collage.png, From left, clockwise: Protests against Bush v. Gore after the 2000 United States presidential election; Heads of state meet for the Millennium Summit; The International Space Station in its infant form as seen from ...
+ and
Windows PowerShell
PowerShell is a task automation and configuration management program from Microsoft, consisting of a command-line shell and the associated scripting language. Initially a Windows component only, known as Windows PowerShell, it was made open-s ...
on
Windows 7+ and
COMMAND.COM
on DOS/ Microsoft
Windows 3.x-
9x/
ME.
The
system call
In computing, a system call (commonly abbreviated to syscall) is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services (for example, acc ...
that effects the command in most operating systems is that is defined by
POSIX.
Command line shells on Windows usually use the
Windows API to change the current working directory, whereas on Unix systems calls the
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 command inherits the parent process' directory, then the objective of the command cd will never be achieved.
Windows PowerShell
PowerShell is a task automation and configuration management program from Microsoft, consisting of a command-line shell and the associated scripting language. Initially a Windows component only, known as Windows PowerShell, it was made open-s ...
, Microsoft's object-oriented command line shell and
scripting language
A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled.
A scripti ...
, executes the command (''cmdlet'') within the shell's process. However, since PowerShell is based on the
.NET Framework
The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
and has a different architecture than previous shells, all of PowerShell's cmdlets like ,
etc. run in the shell's process. Of course, this is not true for legacy commands which still run in a separate process.
Usage
A
directory is a logical section of a
file system used to hold files. Directories may also contain other directories. The 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, , and three subdirectories.
If the user's current working directory is the home directory (), then entering the command
ls
followed by 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
Wed Oct 9th 9:01
games Tue Oct 8th 14:32
encyclopedia 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 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. ; alternatively, with the 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 from the command line with no arguments has different effects in different operating systems. For example, if is executed without arguments in DOS, OS/2, or Windows, the current working directory is displayed (equivalent to Unix pwd
In Unix-like and some other operating systems, the pwd command (''print working directory'') writes the full pathname of the current working directory to the standard output.
Implementations
Multics had a pwd command (which was a short n ...
). If is executed without arguments in Unix, the user is returned to the home directory.
Executing the 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
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
, the caller's current directory is not altered by the script's invocation of the command. This is because in Unix, the script is usually executed within a subshell.
Options
Unix, Unix-like
* by itself or will always put the user in their home directory.
* will leave the user in the same directory they are currently in (i.e. the current directory won't change). This can be useful if the user's shell's internal code can't deal with the directory they are in being recreated; running will place their shell in the recreated directory.
* cd ~''username''
will put the user in the username's home directory.
* (without a ) will put the user in a subdirectory; for example, if they are in , typing will put them in , while puts them in .
* will move the user up one directory. So, if they are , moves them to , while moves them to (i.e. up two levels). The user can use this indirection to access subdirectories too. So, from , they can use to go to
* 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.
DOS, OS/2, Windows, ReactOS
* ''no attributes'' print the full path of the current directory.
* Print the final directory stack, just like dirs.
* Entries are wrapped before they reach the edge of the screen.
* entries are printed one per line, preceded by their stack positions.
* (DOS and Windows only) returns to the root dir. Consequently, command always 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 in the control stream, but is available as in most client command-line programs. Some clients also have the for changing the working directory locally.
The numerical computing environments MATLAB
MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementa ...
and GNU Octave include a cd
function with similar functionality. The command also pertains to command-line interpreters of various other application software.
See also
* Directory structure
* pushd and popd
* chroot
* List of command-line interpreters
References
Further reading
*
*
*
External links
Windows XP > Command-line reference A-Z > Chdir (Cd)
from Microsoft TechNet
*
{{Portalbar, Free and open-source software
Internal DOS commands
File system directories
Inferno (operating system) commands
IBM i Qshell commands
MSX-DOS commands
OS/2 commands
ReactOS commands
Windows administration
Standard Unix programs
Unix SUS2008 utilities