Linux cd 命令图文详解
cd 命令是 *nix 系统中最基本的命令,它所做的事情是改变你当前所在的目录。本文详细介绍该命令,它所能完成的功能以及关于该命令内在的东西。
cd 命令:一个内置命令
BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。我将解释什么是内置命令,以及为什么 cd 是一个内置命令。首先,用 SHELL 环境变量确认你当前的 shell:
现在用 which 命令检查 cd 命令二进制文件所在的路径(如果存在的话):
结果什么都没有输出,这是因为系统中不存在 cd 命令的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 BASH 的内置命令。内置命令就是内建在 shell 里的命令,另一个内置命令 type 会给你显示 cd 命令是一个内置命令的信息:
如果你尝试获得任何内置命令的帮助文档,将不存在它们独立的帮助页:
对于这些内置命令,不会创建独立的进程来运行它们,因此他们运行效率较高。
为了得到所有的内置命令,你可以使用 help 命令(这里 help 本身也是一个内置命令):
为什么 cd 是内置命令
为了描述简单,我就不讨论更多的细节了,但是要理解这个问题的答案,还需要知道一点 Unix 进程相关的知识。
BASH 创建的任何进程,它会由一个 BASH 的子 shell(当前 BASH 进程的子进程)来执行该进程,新建的进程运行实例、输出(如果需要的话),当该进程结束时,改子 shell 的任何属性都不会返回给父 shell。注意到的是,cd 命令用来改变 shell 当前所在的路径,如果 cd 是一个外部命令,它将改变子 shell 的当前路径,当运行完返回时,他所做的改变对父 shell 没有关系。因此,shell 的当前路径还是没有改变!所有改变当前 shell 环境的命令,在实现上都必须实现成内置命令。如果实现成外部命令,我们将不会得到预期的结果。
下面我们探索 cd 命令的用法:
cd 命令用法
如果你直接输入 cd 命令而不带任何参数,它将切换到你的 home 目录下,不管你当前所在的目录是什么:
波浪线(~)符号也代表 home 目录,你也可以使用它来切换到 home 目录下: