絶対パス(absolute path)と相対パス(relative path)入門 - . と .. と ~ を理解する

絶対パス(absolute path)と相対パス(relative path)入門 - . と .. と ~ を理解する

パスの読み方でつまずいていませんか?

cd ../logs って書いてあるけど、この .. って何?」「~/Documents~ ってどこ?」——コマンドを学び始めると、こういう記号付きの「住所」に必ず出会う。これが パス(path) だ。

この記事では、絶対パス(absolute path)と相対パス(relative path)の違い、そして . .. ~ という3つの記号の意味を、ライナとライニー先輩の会話でやさしく整理していく。読み終わるころには、どんなパスを見ても「今どこを指しているか」が分かるようになる。

この記事でわかること

  • 「パス」がファイルやフォルダの住所であること
  • 絶対パス(/ から始まる)と相対パス(現在地から辿る)の違い
  • .(今いる場所)/ ..(1つ上)/ ~(ホーム)の意味
  • 同じ場所を2通りの書き方で指せること
  • 迷子になったときに pwd で現在地を確認するコツ

1. そもそもパスって何?

結論: パスはファイルやフォルダの「住所」。どのフォルダをたどればそこに着くかを、/ で区切って書いたもの。

リナ: ライニー先輩、コマンドの説明に出てくる /home/lina/memo.txt みたいなやつ、いつも何を表してるのか分からなくて…
ライニー先輩: それは「パス(path)」だよ。日本語にすると「経路」。ファイルやフォルダがどこにあるかを示す住所だと思えばいい。
リナ: 住所、ですか?
ライニー先輩: そう。/home/lina/memo.txt なら、「home フォルダの中の lina フォルダの中にある memo.txt」っていう意味。/(スラッシュ)が区切り文字で、フォルダを1段ずつ降りていくイメージだね。
リナ: なるほど! 郵便の住所が「東京都→渋谷区→...」って絞り込んでいくのと似てますね。

パス=ファイルへの道順

Linux ではすべてのファイル・フォルダが /(ルート)を頂点とした1本の木構造に並んでいる。パスは、その木のどの枝をたどればお目当てのファイルに着くかを書いた「道順」だ。木構造そのものは ディレクトリ構造の全体像 で詳しく解説している。

2. 絶対パスとは?

結論: 絶対パスは必ず /(ルート)から始まる、どこから見ても変わらない住所。「東京都から書いた完全な住所」と同じ。

リナ: パスにも種類があるって聞いたんですけど、本当ですか?
ライニー先輩: そうなんだ。大きく2種類あって、まずは「絶対パス(absolute path)」から。これは必ず / から始まるのが特徴だよ。
リナ: 最初がスラッシュ、ですね。
ライニー先輩: そう。/ は木のてっぺん「ルートディレクトリ」を表す。絶対パスは、そのてっぺんから目的地までを省略せず全部書く。だから、自分が今どこにいても同じ場所を指せるんだ。
リナ: いつ書いても同じ住所になるってことですか?
ライニー先輩: その通り。たとえば設定ファイルの場所 /etc/hosts は、リナがどのフォルダにいても /etc/hosts のまま。郵便で言えば「東京都渋谷区...」と都道府県から書いた完全な住所だね。
cd /etc
pwd
/etc

/etc のように / で始まるパスを指定すると、現在地に関係なく必ずその場所へ移動できる。

絶対パスの目印は先頭の /

  • /(ルート)から書き始める
  • 現在地がどこでも結果は同じ
  • 設定ファイルやスクリプトなど「確実にこの場所」と指定したいときに向く

3. 相対パスとは?

結論: 相対パスは「今いる場所」を起点にした住所。/ で始まらず、現在地が変わると指す先も変わる。

リナ: もう1種類は何ていうんですか?
ライニー先輩: 「相対パス(relative path)」だよ。こっちは / から始まらない。「今いる場所」を起点にして道順を書くんだ。
リナ: 今いる場所が基準…?
ライニー先輩: そう。たとえばリナが /home/lina にいるとき、cd Documents と打つと /home/lina/Documents に移動する。「ここから見て Documents の中へ」って意味だね。
リナ: じゃあ、別の場所で同じ cd Documents を打ったら…?
ライニー先輩: 行き先が変わる。/var にいるなら /var/Documents を探しにいく。これが「相対」って呼ばれる理由。自分の立ち位置によって指す先が相対的に変わるんだ。
pwd
/home/lina
cd Documents
pwd
/home/lina/Documents

相対パスは「今どこにいるか」で結果が変わる

同じ cd Documents でも、現在地(カレントディレクトリ)が違えば移動先も変わる。コマンドが思った通りに動かないときは、まず pwd で現在地を確認するクセをつけよう。

4. . と .. と ~ の意味は?

結論: . は「今いる場所」、.. は「1つ上の階層」、~ は「自分のホームディレクトリ」を表す特別な記号。

リナ: 本題なんですけど、. とか .. とか ~ って結局なんなんですか? ずっと謎で…
ライニー先輩: いい質問。これは相対パスを書くときに大活躍する「特別な記号」なんだ。3つまとめて覚えよう。
リナ: お願いします!
ライニー先輩: まず .(ドット1つ)は「今いる場所そのもの」。..(ドット2つ)は「1つ上の階層」。そして ~(チルダ)は「自分のホームディレクトリ」を表す近道だよ。
記号 読み方 意味
. ドット / カレント 今いる場所(カレント) ./script.sh(ここのスクリプト)
.. ドットドット 1つ上の階層 cd ..(親フォルダへ)
~ チルダ 自分のホームディレクトリ cd ~(ホームへ一発移動)

.. で1つ上に戻る

リナ: .. がいちばん見かける気がします。
ライニー先輩: よく使うよ。/home/lina/Documents にいるときに cd .. すると、1つ上の /home/lina に戻る。さらに cd .. すれば /home だね。
pwd
/home/lina/Documents
cd ..
pwd
/home/lina

.. は組み合わせも可能だ。cd ../../etc なら「2つ上に戻ってから etc に入る」という意味になる。

~ でホームに一発で帰る

リナ: ~ はどんなときに便利なんですか?
ライニー先輩: どこにいても、cd ~ だけで自分のホームディレクトリ(/home/lina など)に一発で戻れる。深いフォルダで迷子になったときの「帰宅ボタン」みたいなものだね。cd を引数なしで打っても同じ効果だよ。
cd ~
pwd
/home/lina

~/Documents のように書けば「ホームの中の Documents」を、今いる場所に関係なく指せる。

. はいつ使うの?

. は普段あまり打たないが、スクリプトを実行するときに ./script.sh という形でよく登場する。これは「今いるフォルダにある script.sh」という意味。. を付けないと「コマンドの置き場所」から探されてしまい見つからないことがあるため、自作スクリプトの実行では ./ を付けるのが定番だ。

5. 絶対パスと相対パス、どう使い分ける?

結論: 確実さ重視なら絶対パス、近場へサッと移動するなら相対パス。同じ場所を両方で書けることも多い。

リナ: 結局、絶対パスと相対パスはどう使い分ければいいんですか?
ライニー先輩: ざっくり言うと、「迷わず確実に指したい」なら絶対パス、「今いる場所のすぐ近く」なら相対パスが楽、っていう感じ。
リナ: 両方で同じ場所を指せることもあるんですか?
ライニー先輩: あるよ。たとえばリナが /home/lina にいるとき、/home/lina/Documents(絶対)も Documents(相対)も、行き先は同じ /home/lina/Documents。短く書けるのが相対パスの強みだね。

同じ移動を2通りで書いた例を見てみよう(現在地が /home/lina の場合)。

cd /home/lina/Documents
cd Documents

どちらも結果は同じ /home/lina/Documents への移動だ。

使い分けのめやす

  • 絶対パス: 設定ファイル / スクリプト / 別の遠い場所を「確実に」指したいとき
  • 相対パス: すぐ隣・1つ上など「近場」をサッと指したいとき
  • 迷ったら絶対パスのほうが事故りにくい(現在地に左右されないため)

6. 迷子になったらどうする?

結論: pwd で現在地を確認するのが基本。相対パスがうまく動かないときは、まず今どこにいるかを疑う。

リナ: 相対パスで cd したら「そんなディレクトリないよ」って怒られました…
ライニー先輩: それ、初心者あるあるだよ。相対パスは現在地が基準だから、思っていた場所と違うところにいると失敗するんだ。そんなときの合言葉は pwd
リナ: pwd?
ライニー先輩: "print working directory" の略で、「今いる場所」を表示してくれるコマンド。エラーが出たら、まず pwd で現在地を確認して、そこから目的地までの道順を考え直すといいよ。
pwd
/var/log

Documents がない」と言われたら、pwd の結果を見て「あ、今 /var/log にいるのか。じゃあ cd ~/Documents にしよう」と修正できる。ls で今いる場所の中身を一覧して、次に進めるフォルダを確認するのも有効だ。

ブラウザ上で実際にパス移動を練習できる。Penguin Gym Linux のターミナルcdpwd を何度も打って、現在地が変わる感覚を体で覚えよう。手を動かすのが上達の近道だ。

まとめ

  • パスはファイル・フォルダの「住所」。/ で区切って道順を書く
  • 絶対パス/(ルート)から始まり、現在地に関係なく同じ場所を指す
  • 相対パス/ で始まらず、今いる場所(カレントディレクトリ)が基準になる
  • . は今いる場所、.. は1つ上、~ は自分のホームディレクトリ
  • 相対パスでつまずいたら、まず pwd で現在地を確認する

次に読む