【Linux】Linux 系统编程——相对路径和绝对路径

发布时间:2024年01月11日

概述

相对路径和绝对路径是文件系统中定位文件和目录的两种主要方法。它们的主要区别在于如何引用文件的位置。

绝对路径

  • 定义: 绝对路径是从文件系统的根目录(表示为 /)开始的完整路径。它描述了从根目录到目标文件或目录的完整路径。

  • 特点:

    • 始终以斜杠 / 开始。
    • 不依赖于当前工作目录。
    • 明确且一致,不管当前位置在哪里,在任何时候都可以使用绝对路径定位到我们想要的文件
  • 例子:

    • /home/username/Documents/report.txt
    • /etc/nginx/nginx.conf
  • 使用场景:

    • 当需要确保引用的文件或目录不受当前工作目录变化的影响时。
    • 在脚本或系统配置文件中,当需要指向具有固定位置的文件时。

相对路径

  • 定义: 相对路径是相对于当前工作目录的路径。它不是从根目录开始,而是从用户当前所在的目录开始描述到目标文件或目录的路径。

  • 特点:

    • 不以斜杠 / 开始。
    • 可以使用 .(表示当前目录)和 ..(表示上一级目录)这样的特殊符号。
    • 依赖于当前工作目录。
  • 例子:

    • Documents/report.txt(如果当前目录是 /home/username
    • ../nginx.conf(表示当前目录的上一级目录中的 nginx.conf 文件)
  • 使用场景:

    • 在命令行操作中,当目标文件或目录与当前工作目录关系较近时。
    • 提高灵活性,尤其是在文件结构可能发生变化的情况下。

绝对路径的作用

绝对路径的主要特点是能够确保准确一致,从文件系统根开始的确切位置,确保无论当前的工作目录是什么,文件或目录的引用都是一致的。所以经常用在脚本自动化、系统配置文件、创建快捷方式等情况。

在编写脚本(如批处理脚本、Shell 脚本)或进行系统自动化时,使用绝对路径可以避免依赖于当前目录,提高脚本的可靠性和可移植性。当需要设置系统配置文件(如 Linux 中的 /etc/fstab )通常也使用绝对路径来确保系统服务和程序能够准确找到所需的文件和目录。此外,在设置网络共享或服务器资源时,使用绝对路径可以确保客户端始终能够准确访问共享资源。

相对路径的作用

相对路径的主要特点是灵活便捷,提供了一种相对于当前工作目录的方式来引用文件或目录,尤其在文件结构发生变化时可以更加灵活。相对路径经常用在在软件项目或网站开发中,可以方便地组织项目结构,使得项目文件之间的引用不依赖于具体的部署环境。也特别适合于动态生成的文件系统结构,其中文件的具体位置可能随时间变化。

系统是怎么通过相对路径定位文件的?

绝对路径定位文件比较好理解,直接从根目录开始,一层一层往下走,直到定位到具体文件。那么相对路径,比如../nginx.conf这种路径是怎么定位到具体文件的呢?

系统识别相对路径的过程基于当前工作目录(Current Working Directory)的。下面我们来详细探讨一下:

  1. 当前工作目录:

    • 在系统中执行任何操作时,都有一个“当前工作目录”。这是目前所在的目录,也是命令行界面或应用程序的参照点。
    • 在命令行中,通常可以通过命令(如 pwd 在 Unix/Linux 系统中)查看当前工作目录。
  2. 析相对路径 :

    • 当您使用相对路径引用文件或目录时,系统会从当前工作目录开始解析这个路径。
    • 例如,如果相对路径是 ./folder/file.txt,系统会在当前工作目录中查找名为 folder 的子目录,并在该子目录中寻找 file.txt 文件。
    • 如果路径开始于 …(表示上一级目录),系统会先跳到当前目录的父目录,然后再按照相对路径进行解析。
  3. 特殊符号 :

    • 在相对路径中,. 表示当前目录,而 … 表示上一级目录。
    • 这些符号可以组合使用来创建更复杂的路径。例如,…/…/file.txt 表示从当前目录开始向上两级,然后寻找 file.txt 文件。
  4. 与应用程序的交互 :

    • 当应用程序需要打开或保存文件时,通常使用相对路径来引用与当前工作目录相关的文件。
    • 这使得应用程序能够更灵活地处理文件,特别是在处理大量文件和目录结构时。
  5. 环境依赖性 :

    • 相对路径的解析依赖于环境,特别是当前工作目录的设置同一相对路径在不同的工作目录下可能指向不同的文件。
文章来源:https://blog.csdn.net/qq_39811006/article/details/135538735
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。