源本科技 | 码上会

Unix 绝对路径与相对路径

2025/12/23
53
0

在 Unix 和 Linux 系统中,** 路径(Path)** 用于定义文件系统中文件和目录的位置。掌握路径的使用对于高效地导航和管理文件至关重要。虽然 Windows 系统也使用路径概念,但由于大多数用户依赖鼠标操作,往往不太注意其细节。而在 Linux 中,路径遵循特定语法,通常使用正斜杠 / 来分隔各级目录。

路径主要分为两类:绝对路径(Absolute Path)相对路径(Relative Path)。下面我们详细解析这两种路径类型。


什么是绝对路径?

绝对路径是从根目录(/)开始,完整描述文件或目录位置的路径。无论当前工作目录在哪里,绝对路径始终指向同一个位置。

特点

  • 以正斜杠 / 开头

  • 从根目录 / 出发逐级定位

  • 不依赖当前工作目录

示例

/home/anshu/scripts/myscript.sh

这是一个绝对路径,因为它从根目录 / 开始。

实际应用

假设你想查看位于 /home/kt 目录下的 abc.sql 文件:

  • 如果你在当前目录下执行:

    $ cat abc.sql

    该命令仅在当前目录存在 abc.sql 时才有效

  • 若文件实际位于 /home/kt/abc.sql,则必须使用绝对路径:

    $ cat /home/kt/abc.sql

提示:路径中每出现一个 /,就表示进入下一级目录。例如 /home/kt 表示从根目录进入 home,再进入 kt,共两级。


什么是相对路径?

相对路径是相对于当前工作目录(可通过 pwd 命令查看)来指定文件或目录位置的路径。它不以 / 开头,而是利用快捷符号进行导航。

特点

  • 不以 / 开头

  • 依赖当前工作目录

  • 使用快捷符号:

    • . 表示当前目录

    • .. 表示上一级(父)目录

使用 ... 的示例

假设当前位于 /home/kt/abc

$ pwd
/home/kt/abc

$ cd ..          # 返回上一级目录
$ pwd
/home/kt

$ cd ../..       # 返回上两级目录
$ pwd
/home

注意:.. 的作用是“向上”移动,而不是向下。结合 / 使用时(如 ../..),表示连续返回多级父目录。


绝对路径/相对路径

假设你当前位于 /home/kt,想要进入子目录 abc(即目标路径为 /home/kt/abc)。

方法 1:使用相对路径

$ pwd
/home/kt

$ cd abc          # 相对路径:基于当前位置进入子目录
$ pwd
/home/kt/abc

方法 2:使用绝对路径

$ pwd
/home/kt

$ cd /home/kt/abc   # 绝对路径:从根目录完整指定
$ pwd
/home/kt/abc

两种方式结果相同,但适用场景不同:

  • 相对路径适合在已知当前位置且路径较短时使用,简洁高效。

  • 绝对路径适合跨目录跳转或脚本编写,确保路径唯一且明确。


重点总结

特性

绝对路径

相对路径

起始字符

/ 开头

不以 / 开头

参照点

根目录 /

当前工作目录(pwd

依赖性

独立于当前位置

依赖当前位置

常用符号

无特殊符号

.(当前目录)、..(父目录)

适用场景

脚本、跨目录操作、精确引用

快速导航、本地操作


思考题

  1. 如果当前目录是 /var/log/nginx,那么 ../../etc/hosts 指向哪个绝对路径?

  2. 在编写 Shell 脚本时,为什么推荐使用绝对路径而非相对路径?

  3. 执行 cd . 命令会发生什么?这个操作有意义吗?为什么?