cd指令
cd
(Change Directory)是 Linux 中用于更改当前工作目录的命令。
cd [目录路径]
目录路径
:可以是绝对路径或相对路径。如果不指定路径,cd
命令会将工作目录切换到用户的主目录。
常见用法
- 切换到指定目录
cd /dir_name/dir_name/
将当前目录切换到指定的绝对路径 /dir_name/dir_name/
。
- 切换到主目录
只输入 cd
或者使用 cd ~
可以直接返回用户的主目录。
cd
或
cd ~
- 返回上一级目录
使用 ..
表示上一级目录。
cd ..
如果当前在 /home/user/docs
目录下,执行 cd ..
会将工作目录切换到 /home/user
。
- 返回到上一次所在的目录
使用 -
(减号)可以返回到上一次所在的目录。
cd -
该命令会在两个目录之间来回切换。
- 切换到当前目录
执行 cd .
会保持在当前目录不变,因为 .
代表当前目录。
cd .
- 使用相对路径
使用相对路径可以从当前目录开始导航。如果在 /home/user
目录,想进入 docs
目录时,直接使用相对路径:
cd docs
- 切换到根目录
根目录在 Linux 文件系统中是 /
,可以直接使用 cd /
切换到根目录:
cd /
其他注意事项
- 软链接:如果目录是软链接,
cd
会解析软链接并进入指向的目标目录。 - 权限问题:如果没有权限访问某个目录,
cd
命令会返回错误并保持在当前目录。
环境变量 `CDPATH`
设置`CDPATH` 环境变量,可以帮助 `cd` 命令更智能地查找目录。export CDPATH=/usr/local:/var/www
如果设置了 CDPATH
,当使用 cd dirname
时,cd
会首先检查当前目录下是否存在 dirname
,如果没有,它会在 CDPATH
中定义的路径中查找。
这个环境变量的设置对其他命令使用没影响。但如果脚本中使用了 cd
命令并且未显式指定绝对路径,CDPATH
可能会让 cd
切换到不正确的目录。
cd命令选项
1. `-L`(逻辑模式)
-L
是 “逻辑” 模式(Logical mode),cd
的默认行为。如果不指定任何选项,cd
会自动以逻辑模式运行。
- 在逻辑模式下,
cd
会尊重符号链接(symlinks)。如果导航到一个符号链接,cd
将保持符号链接的路径,而不会解析到实际的物理路径。
示例:
lrwxrwxrwx. 1 root root 7 7月 25 2019 bin -> usr/bin
执行:
# cd -L bin
# pwd
/bin
即使 bin
实际上指向 /usr/bin
,在逻辑模式下,pwd
仍然会显示符号链接的路径 /bin
,而不会解析到 /usr/bin
。
2. `-P`(物理模式)
-P
是 “物理” 模式(Physical mode),它告诉 cd
命令忽略符号链接,直接切换到符号链接指向的物理路径。
- 物理模式下,
cd
会解析符号链接并显示实际的物理路径。
示例:
使用上面相同的符号链接:
# cd -P bin
# pwd
/usr/bin
物理模式下,cd
会解析符号链接,pwd
命令会显示目标路径 /usr/bin
,而不是符号链接的路径 /bin
。
3. `-e`(和 `-P` 配合使用)
-e
选项只能与 -P
一起使用,这个选项告诉 cd
在符号链接失效时返回错误。
- 如果使用
cd -P -e
切换到一个不存在的符号链接路径,cd
会立即返回错误,而不会无信息提示。
但是我试了带不带-e
都有错误返回,不知道在什么场景下有区别。