Linux 绝对路径与相对路径

在 Linux 树形目录结构中,路径就是定位文件 / 目录的 “地址”,绝对路径和相对路径是两种定位方式,核心区别在于起始点不同

一、绝对路径

1. 定义

根目录 / 出发的完整路径,相当于 “从城市原点出发的详细地址”。

2. 核心特征

  • 路径开头必须是 /
  • 唯一性:无论当前在哪个目录,绝对路径都能精准定位目标
  • 稳定性:适合写脚本、配置文件(不会因当前目录变化而出错)

3. 示例

目标位置 绝对路径
普通用户主目录 /home/zhangsan
系统用户配置文件 /etc/passwd
Nginx 配置文件 /etc/nginx/nginx.conf
临时文件目录 /tmp

二、相对路径

1. 定义

当前所在目录 出发的简化路径,相当于 “从你现在站的位置出发的路线”。

2. 核心特征

  • 路径开头不是 /
  • 相对性:同一个目标,在不同目录下的相对路径不同
  • 便捷性:手动操作时输入更短

3. 关键特殊符号

这两个符号是相对路径的核心,必须牢记:

符号 含义 示例
. 代表当前目录 ./a.out → 当前目录下的可执行文件 a.out
.. 代表上一级目录(父目录) ../src → 当前目录的上一级目录里的 src 文件夹

三、对比实操(最易理解的例子)

假设当前目录是 /home/zhangsan(用 pwd 命令可查看当前目录)

目标文件的绝对路径 相对路径写法(当前在 /home/zhangsan 解释
/home/zhangsan/code/test.c code/test.c 直接进入当前目录的子目录 code
/etc/hosts ../../etc/hosts .. 回退到 /home → 再回退到 / → 进入 etchosts
/home/root ../root .. 回退到 /home → 进入 root 目录

四、使用场景选择

  1. 写脚本 / 配置文件 → 优先用绝对路径

    比如定时备份日志的脚本,用 /var/log/syslog 而不是 ../var/log/syslog,避免脚本在不同目录执行时找不到文件。

  2. 手动终端操作 → 优先用相对路径

    比如当前就在 /home/zhangsan,想打开 docs/note.txt,直接输 cat docs/note.txt,比输完整绝对路径省事。

五、补充:两个易错点

  1. ~ 是绝对路径的简写

    ~ 等价于当前用户的主目录,属于绝对路径范畴:

    • 普通用户:~/home/用户名

    • root 用户:~/root

      示例:~/.bashrc → 绝对路径是 /home/zhangsan/.bashrc

  2. 区分大小写

    Linux 路径严格区分大小写!/home/ZhangSan/home/zhangsan 是两个不同目录,写路径时要注意。