絶対パスと相対パス

 Linuxのディレクトリツリーを理解し活用するためには、ファイルやディレクトリの位置を示すパスの書き方を正しく理解することが重要です。ここでは、絶対パス相対パスの違いについて、具体的な例やディレクトリ構造図を用いてわかりやすく解説します。

絶対パス

 絶対パス(またはフルパス)とは、ルートディレクトリ/を起点としてファイルやディレクトリの場所を示すパスの表記方法です。パスの先頭が/で始まるのが特徴で、システム内で一意にファイルやディレクトリを指定できます。

絶対パスの例
  • /usr/bin/bash
  • /etc/nginx/nginx.conf
  • /home/user01/Documents/report.txt
特徴
  • 明確性:ルートディレクトリからの完全な経路を示すため、曖昧さがありません。
  • 非依存性:カレントディレクトリに関係なく、常に同じ場所を指します。
欠点
  • 入力の手間:ディレクトリが深い場合、パスが長くなり入力が面倒です。
  • 移植性の問題:他のLinuxマシンにプログラムを移植する際、ディレクトリ構造が異なると動作しない可能性があります。

相対パス

 相対パスとは、現在のカレントディレクトリを起点としてファイルやディレクトリの場所を示すパスの表記方法です。パスの先頭が/で始まらないのが特徴で、カレントディレクトリからの経路を示します。

特殊なディレクトリ
  • .(ドット):カレントディレクトリ
  • ..(ドットドット):親ディレクトリ(1つ上のディレクトリ)
相対パスの例
  • Documents/report.txt(カレントディレクトリ内のDocumentsフォルダの中のreport.txt
  • ../config/settings.conf(親ディレクトリのconfigフォルダ内のsettings.conf
  • ./script.sh(カレントディレクトリ内のscript.sh

ディレクトリ構造を用いた具体例

以下のディレクトリ構造を例に、絶対パスと相対パスの違いを解説します。

/
├── home
│   └── user01
│       ├── Documents
│       │   └── report.txt
│       ├── Downloads
│       └── script.sh
└── etc
    └── config
        └── settings.conf
絶対パスの例
  • /home/user01/Documents/report.txt
  • /etc/config/settings.conf

相対パスの例

カレントディレクトリが「/home/user01」の場合

  • Documents/report.txt(/home/user01/Documents/report.txtを指す)
  • ./script.sh(/home/user01/script.shを指す)
  • ../../etc/config/settings.conf(/etc/config/settings.confを指す)

カレントディレクトリが「/home/user01/Documents」の場合

  • report.txt(/home/user01/Documents/report.txtを指す)
  • ../script.sh(/home/user01/script.shを指す)
  • ../../../etc/config/settings.conf(/etc/config/settings.confを指す)

絶対パスと相対パスの比較

項目絶対パス相対パス
起点ルートディレクトリ /カレントディレクトリ
表記の特徴パスの先頭が / で始まるパスの先頭が / で始まらない
明確さシステム内で一意で明確カレントディレクトリに依存するため注意が必要
入力の手間パスが長くなる場合がある短く簡潔に記述できる
移植性ディレクトリ構造が異なると問題が発生カレントディレクトリに依存するため柔軟性が高い
絶対パスと相対パスの比較

「.」と「..」の確認

  • .カレントディレクトリを指します。
     例:./script.sh はカレントディレクトリ内の script.sh を指します。
  • ..親ディレクトリを指します。
     例:../config は親ディレクトリ内の config ディレクトリを指します。

まとめ

  • 絶対パスはルートディレクトリから始まる完全なパスで、ファイルやディレクトリを一意に指定できますが、長くなりがちで移植性に欠ける場合があります。
  • 相対パスはカレントディレクトリを基点とするパスで、短く簡潔に記述できますが、カレントディレクトリに依存するため、使用時には注意が必要です。
  • ... を使用することで、カレントディレクトリや親ディレクトリを基点にした柔軟なパス指定が可能です。

 Linuxで効率的に作業を進めるためには、絶対パスと相対パスを状況に応じて使い分けることが重要です。これらの概念を正しく理解し、適切に活用することで、ファイル操作やスクリプト作成がよりスムーズになります。