Linux之cd /abc与cd /abc/的区别及说明
在 Linux 中,cd /abc 和 cd /abc/ 的区别非常微妙,但在绝大多数情况下没有区别。
核心结论
如果 /abc 是一个目录:两者完全等价,都会进入 /abc 目录。
如果 /abc 是一个符号链接(指向目录):两者都进入链接指向的目标目录,行为无差别。
如果 /abc 不是一个目录(例如是普通文件或不存在):
cd /abc→ 报错:Not a directory或No such file or directorycd /abc/→ 报错:Not a directory(因为末尾的/暗示了路径必须是目录)
细微的技术差异(理论层面)
路径解析逻辑:
/abc表示名为abc的文件或目录(路径名解析到该节点即可)。/abc/明确表示“abc下面的内容”,因此系统要求abc必须是一个目录(路径名解析会检查类型)。
对非目录对象的处理:
# 假设 /def 是一个普通文件 cd /def # 错误: Not a directory cd /def/ # 错误: Not a directory (但错误原因更早触发,因为要求末尾/前的组件是目录)
实际错误信息在大多数 shell 中几乎一样,区别极细微。
实用建议
日常使用:两者通用,按个人习惯即可,不用纠结。
脚本编程:为了语义清晰:
- 明确要操作目录时,建议加末尾
/(如cd /abc/),可提前暴露“路径不是目录”的问题。 - 或者使用更稳健的写法:
cd /abc || exit
避免歧义:
- 如果
abc可能是一个符号链接,而你想进入链接指向的目录(而非链接本身),两者都行;若想进入链接所在位置? - 实际上
cd总是跟随链接,无法直接进入链接本身所在的目录路径(除非用cd -P物理路径)。
总结表
| 场景 | cd /abc | cd /abc/ | 差异 |
|---|---|---|---|
| /abc 是目录 | 进入 /abc | 进入 /abc | 无 |
| /abc 是指向目录的符号链接 | 进入目标目录 | 进入目标目录 | 无 |
| /abc 是普通文件 | 错误 | 错误 | 错误信息可能略有不同,但无实际影响 |
| /abc 不存在 | 错误 | 错误 | 无实际影响 |
一句话概括:
在 Linux 中,对于 cd 命令,这两个写法几乎没有实际区别,放心互换使用。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
CentOS7 LNMP+phpmyadmin环境搭建 第一篇虚拟机及centos7安装
这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建第一篇虚拟机及centos7安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
浅析centos 7 自带的 php 5.4升级为 5.6的方法
这篇文章主要介绍了centos 7 自带的 php 5.4升级为 5.6的方法,需要的朋友可以参考下2018-12-12


最新评论