Cd (命令)

，有时也写作（change directory，改变目录），是在Unix、类Unix、Windows和DOS操作系统下用于改变工作目录的命令行命令。在Unix的Shell脚本与Windows或DOS的批处理文件中亦可使用。

 用法 

目录是文件系统用于保存文件的逻辑区段，而目录还可以包含有其他的目录。通过cd命令，可以前进到子目录、后退到父目录、回到根目录（Unix下为“/”，DOS下为“\”）或者进入到任何给出的目录中去。

假设下面的这一小段为Unix文件系统，显示的是一位用户的起始目录（以“~”表示），其中有一个文件（“text.txt”）和三个子目录。


当用户的当前工作目录为起始目录（“~”）时，首先输入命令“ls”，然后输入“cd games”，会产生下列的效果：

user@wikipedia:~$ ls
workreports games encyclopedia text.txt
user@wikipedia:~$ cd games
user@wikipedia:~/games$

该用户现在的工作目录即为“game”目录。

在DOS中，与之相似的过程（“起始目录”的概念可能会不适用，这取决于该DOS的版本）会像这样显示：

   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>
应注意的一点是，在不同的操作系统中，如果不给出变量会让cd产生不同的结果。例如，如果在DOS下不给出变量而执行，会显示出当前的工作目录来；而在Unix下不给出变量而执行，则会返回到起始目录去。在脚本或批处理内执行的cd，也会产生不同的结果。在DOS中，批处理文件中使用的该命令可以直接改变调用者的当前目录；而在Unix下，使用cd命令的脚本则无法改变调用者的当前目录。这是因为在Unix下的脚本通常在子外壳中执行。

 工作原理 

cd通常是由命令行解释器内建提供的。绝大多数的Unix shell（Bourne shell、tcsh、bash等）、Windows的cmd.exe和Windows PowerShell、以及DOS的COMMAND.COM均是这种情况。

Windows的命令行外壳通常使用Windows API来改变当前的工作目录；而Unix系统的cd则是调用POSIX C的函数chdir()：即是，当该命令执行时，不会为前往另一个目录而创建一个新的进程，而是由外壳代为执行这条命令，ls等其他命令也是这种情况。这是因为，创建新的进程时，子进程会继承父进程创建时的目录。而如果cd命令继承了父进程的目录，则它永远也不能达到它的目标。

 参见 
 CD (DOS命令)
 chroot

 参考文献 


外部链接
 Windows XP > Command-line reference A-Z > Chdir (Cd) from Microsoft TechNet


Category:Windows管理
Category:Unix SUS2008实用工具
Category:内部DOS命令
Category:OS/2
Category:文件系统目录