InfraAcademy

InfraAcademy Blog

【ITパスポート講座⑪】絶対パスと相対パスとは?ファイルパスを理解する!

こんにちは、インフラエンジニアのryuです。

今回は、絶対パスと相対パスについて解説します。絶対パス、相対パスとは、ファイルの場所を指定する方法です。

結論から言うと、絶対パスはツリー構造の頂点(ルート)を起点に場所を示す書き方で、相対パスは今いる場所(カレントディレクトリ)を起点に示す書き方です。2種類の指定方法があり、その違いを分かりやすく解説していきます。

あわせて、... といった記号の意味、WindowsとLinuxの書き方の違い、使い分けの基準までまとめました。実際の動作を確認することで理解を深めていきましょう。

絶対パスと相対パスとは?ファイルの場所を指定する方法

絶対パスと相対パスとは、ファイルの場所を指定する方法です。PCの中には、様々なファイルが存在します。

たとえば、動画ファイルや画像ファイルなどです。それらのファイルがどこにあるのかを示しているのが絶対パスと相対パスです。

住所にたとえると、イメージしやすいかもしれません。都道府県から番地まで全部書いて伝えるのが絶対パス、今いる場所から2軒隣、のように現在地からの位置で伝えるのが相対パスです。

ファイルパスの違いを理解する前に、まずはファイルの構造を理解する必要があります。

ファイルとフォルダーの構造→ツリー構造になっている

まず、Windowsの場合、自分のPCのCドライブを見てください。

Cドライブの中のフォルダー

このようにいくつものフォルダーがあります。さらにそのフォルダーをクリックすると、その中にもいくつものフォルダー、ファイルが存在します。

このように、1つのフォルダーを頂点とし、いくつものフォルダー、ファイルが枝分かれして格納されている構造のことをツリー構造と言います。↓の図のような構造がツリー構造です。

ツリー構造

木が枝分かれしていく様子に似ていることから、ツリー構造と呼ばれています。そして、この頂点にあたる場所はルートと呼ばれます。

ルートは英語で根っこという意味です。パスの話では、このルートが絶対パスの出発点になるので覚えておいてください。

カレントディレクトリとは?いま自分がいる場所のこと

もう1つ、パスの理解に欠かせない言葉があります。それがカレントディレクトリです。

カレントディレクトリとは、いま自分が作業しているフォルダーのことです。エクスプローラーで開いているフォルダーや、コマンド操作中に自分が立っている場所をイメージしてください。

ちなみに、Windowsではフォルダー、Linuxではディレクトリと呼び方が変わります。呼び方は違いますが、ファイルを整理して入れる箱という意味ではほぼ同じものです。

このカレントディレクトリが、後で説明する相対パスの出発点になります。ルートとカレントディレクトリという2つの出発点をおさえたところで、それぞれのパスを詳しく見ていきましょう。

絶対パスとは?頂点(ルート)から場所を指定する方法

まずは、絶対パスから解説します。

絶対パスとは、頂点のフォルダーからファイルの場所を指定する方法です。Windowsの場合、頂点はCドライブやDドライブです。

Linuxの場合は /(root)が頂点になります。出発点からの道順をすべて書くため、フルパスと呼ばれることもあります。

絶対パスのイメージ

指定方法は C:\Windows\system32\notepad.exe のような形になります。ちなみにこのパスは、メモ帳の実行ファイルの絶対パスです。

頂点のCドライブから、Windows、system32と順番にたどって目的のファイルに到達していますよね。道順を最初から最後まで省略せずに書くのが絶対パスです。

絶対パスでメモ帳を起動してみよう

WindowsキーとRキーを同時に押すと、ファイル名を指定して実行という画面が表示されます。そこに絶対パスを入力するとファイルが実行されます。

ファイルを指定して実行する

先ほどのメモ帳の絶対パスを入力して、実際にメモ帳が起動するか試してみてください。クリックではなく、パスの指定でもファイルを実行できると分かるはずです。

Linuxの場合は /var/log/syslog のような形で指定します。先頭の / がルートを表し、そこからvar、logと順番にたどっている書き方です。

絶対パスの特徴は誰が見ても同じ場所を指すこと

絶対パスの最大の特徴は、どこから参照しても必ず同じ場所を指すことです。出発点がルートに固定されているため、今いる場所に関係なく結果が変わりません。

その代わり、階層の深いファイルを指定するとパスがとても長くなります。この記述の長さが、絶対パスの弱点と言えます。

相対パスとは?カレントディレクトリから指定する方法

次は、相対パスを見ていきましょう。

相対パスとは、現在自分がいるフォルダー(カレントディレクトリ)からファイルの場所を指定する方法です。相対的にファイルの場所を指定します。

相対パスのイメージ

相対パスの指定方法は、system32\notepad.exe のような形です。ちなみに、C:\Windows フォルダーに自分がいる前提の書き方です。

同じメモ帳を指しているのに、絶対パスよりぐっと短くなりましたよね。すでに C:\Windows まで来ているので、そこから先の道順だけを書けばよいわけです。

ただし、カレントディレクトリが変わると、同じ書き方では目的のファイルに届かなくなります。相対パスは、今どこにいるかとセットで考える必要があります。

パスで使う記号の意味(. と .. と ~)

パスの指定では、場所を表す専用の記号を使います。まずは、記号の意味を表で整理しましょう。

記号 意味
. カレントディレクトリ(いま自分がいる場所)
.. 1つ上の階層のディレクトリ
~ ホームディレクトリ(Linuxなどで使用)
/ または \ 階層の区切り文字

なお ~ は、起点がカレントディレクトリではなくホームディレクトリに固定されるため、厳密には相対パスではありません。シェルがホームディレクトリの絶対パスに展開してくれる、便利な省略記号と覚えておきましょう。

相対パスで特によく使うのが .. です。.. を使うと、1つ上の階層へ戻ってから別のフォルダーへ進む、といった指定ができます。

..\..\ のように重ねれば、2つ上の階層まで戻れます。また . は今いる場所そのものを表すため、.\system32\notepad.exesystem32\notepad.exe と同じ意味になります。

パターン別!相対パスの書き方

相対パスの書き方を、よくある4つのパターンで整理します。カレントディレクトリが C:\Users\ユーザ名 である前提の例です。

指定したい場所 相対パスの例
同じフォルダー内の memo.txt memo.txt.\memo.txt でも同じ)
1つ下の desktop の中の memo.txt desktop\memo.txt
1つ上の階層 ..
1つ上にある別フォルダー Public の中 ..\Public\memo.txt

下の階層へはフォルダー名をつなげるだけ、上の階層へは .. で戻る、という2つの動きの組み合わせです。この感覚がつかめれば、どんな場所でも相対パスで表せるようになります。

WindowsとLinuxでパスの書き方はどう違う?

ここまでの例を見て、WindowsとLinuxで書き方が少し違うことに気づいた方もいるのではないでしょうか。2つの環境の違いを表で整理しておきます。

比較項目 Windows Linux
頂点(ルート) C:\ などドライブごとにある / の1つだけ
区切り文字 \(円マーク/バックスラッシュ) /(スラッシュ)
絶対パスの例 C:\Windows\system32\notepad.exe /var/log/syslog
大文字と小文字 基本的に区別しない 区別する

一番大きな違いは区切り文字です。Windowsは \ で区切り、Linuxは / で区切ります。

日本語のWindows環境では、\ が円マークとして表示されることが多いです。見た目は違っても、コンピュータ上では同じ文字として扱われています。

また、Linuxにはドライブという考え方がありません。すべてのファイルが / を頂点とする1本のツリーに収まっているのが、Linuxのシンプルで美しいところです。

インフラエンジニアを目指す方は、Linux側の書き方に早めに慣れておくと後で楽になりますよ。サーバーの設定ファイルやログの場所は、ほぼすべてLinux形式のパスで表現されるからです。

絶対パスと相対パスはどう使い分ける?

2つの書き方があると、どちらを使えばいいのか迷いますよね。それぞれのメリット・デメリットを整理してみましょう。

比較項目 絶対パス 相対パス
起点 ルート(頂点) カレントディレクトリ
記述の長さ 長くなりやすい 短く書ける
確実さ どこから見ても同じ場所を指す 今いる場所によって結果が変わる
向いている場面 場所を確実に指定したいとき 近くのファイルを手早く指定したいとき

絶対パスは確実さ、相対パスは手軽さが持ち味です。近くのファイルは相対パスで手早く、離れた場所や確実に指定したい場面では絶対パスで、と考えるのが基本の使い分けになります。

実務でも、この使い分けの考え方は重要です。たとえばcronのような自動実行の仕組みでは、実行時のカレントディレクトリが想定と異なる場合があるため、スクリプト内のパスは絶対パスで書くのが定石とされています。

一方、Webサイトの制作では、サイト内のリンクを相対パスで書く場面が多くあります。フォルダーごと別のサーバーへ配置しても、ファイル同士の位置関係が保たれていればリンクが切れないからです。

実際の動作で理解を深める

絶対パス、相対パスの説明をしました。しかし、文章だけでは、理解できない人もいるかもしれません。

なので、絶対パス、相対パスを指定して、実際に動作させてみましょう。手を動かすと、理解のスピードが一気に上がりますよ。

コマンドプロンプトでカレントディレクトリを確認する

まず、コマンドプロンプトを起動しましょう。メニュー画面で cmd と検索すれば、起動できます。

コマンドプロンプトを起動した時点のカレントディレクトリは C:\Users\ユーザ名 です。画面に表示されているパスが、いま自分がいる場所を表しています。

コマンドプロンプトの起動画面

dir コマンドを使うと、現在のフォルダー配下のファイル、フォルダーの一覧が表示されます。まずは dir を打って、カレントディレクトリに何があるのかを眺めてみてください。

cdコマンドで相対パスと絶対パスを試す

次に、cd コマンドでカレントディレクトリの場所を移動します。以下のコマンドを実行してください。

cd desktop

これは、desktop フォルダーを相対パスで指定し、desktopフォルダーに移動するというコマンドです。絶対パスで指定する場合は、以下のようになります。

cd C:\Users\ユーザ名\desktop

cdコマンドの実行結果

書き方は違いますが、どちらも同じdesktopフォルダーに移動できます。2つのパスが同じ場所を指していることを、実際の動作で体感できるはずです。

このように、いろいろとファイルを相対パスや絶対パスを指定して、動かしてみましょう。コマンドを打ちながら学ぶスタイルが好きな方には、ポート番号をコマンドで実践的に理解する講座⑦もおすすめです。

Linuxの場合はpwd・ls・cdで確認する

Linuxでも、考え方はまったく同じです。カレントディレクトリの確認には pwd、ファイル一覧の表示には ls、移動には cd を使います。

たとえば、次のような流れで操作します。

pwd            ← カレントディレクトリを表示(例: /home/user)
ls             ← いまの場所のファイル一覧を表示
cd /var/log    ← 絶対パスで移動
cd ..          ← 相対パスで1つ上の階層へ移動

cd .. のように、先ほど紹介した記号を組み合わせて移動できるのはLinuxでも同じです。Linuxのコマンド操作はインフラエンジニアの土台になるスキルなので、ぜひあわせて触ってみてください。

ITパスポート試験ではどう出題される?

この記事はITパスポート講座の第11回なので、試験での出題イメージにも触れておきます。

ITパスポート試験では、ディレクトリのツリー構造の図とセットで、ファイルの指定方法を問う問題が出題されることがあります。カレントディレクトリからの相対パスを選ばせる形式が定番です。

たとえば、次のような構造を考えてみてください。

root
 ├── A
 │    └── file1
 └── B   ← カレントディレクトリ

カレントディレクトリが B のとき、file1 を相対パスで指定するとどうなるでしょうか。少し考えてから読み進めてみてください。

答えは ../A/file1 です。.. で1つ上のrootへ戻り、そこから A に入って file1 にたどり着きます。

記号の意味と起点さえ分かっていれば、この形式の問題は確実に得点できます。問題文を読むときは、カレントディレクトリがどこかを最初に確認するのがコツです。

勉強の進め方に不安がある方は、ITパスポートが難しいと感じる方向けの合格手順も参考にしてください。文系の学生の方には、文系学生がITパスポート試験に合格するためにすべきことで勉強法を紹介しています。

よくある疑問

最後に、絶対パスと相対パスについてよく聞かれる疑問に答えておきます。

./ は省略してもいいの?

多くの場面では省略できます。たとえば cd ./desktopcd desktop は同じ意味です。

ただし、Linuxでカレントディレクトリにあるプログラムを実行するときは、./script.sh のように明示する必要があります。安全のため、カレントディレクトリが自動では検索対象(PATH)に含まれない仕組みになっているからです。

~(チルダ)と /(スラッシュ)の違いは?

/ は、ツリー構造全体の頂点であるルートディレクトリを表します。一方の ~ は、ログインしているユーザーのホームディレクトリを表す記号です。

たとえばuserというユーザーであれば、~/home/user の省略形になります。cd ~ と打つだけで、どこにいても自分のホームディレクトリへ戻れるので便利ですよ。

WebサイトのURLにも絶対パスと相対パスはある?

あります。HTMLのリンクで https:// から始まる完全な形で書くのが絶対パス(絶対URL)、そのページからの位置関係で書くのが相対パスです。

さらにWebの世界には、/ から始めてサイトの頂点を起点にするルート相対パスという書き方もあります。起点がどこなのかを考える点は、ファイルパスとまったく同じです。

フォルダーとディレクトリは何が違うの?

どちらもファイルを入れる箱を指していて、意味はほぼ同じです。WindowsなどのGUI環境ではフォルダー、Linuxやコマンド操作の世界ではディレクトリと呼ばれることが多い、という慣習の違いになります。

ITパスポート試験ではディレクトリという言葉で出題されるので、この呼び方に慣れておきましょう。この記事でも、Windowsの画面の話ではフォルダー、Linuxの話ではディレクトリと使い分けています。

まとめ

今回は、絶対パスと相対パスについて解説しました。

絶対パスはルート(頂点)からの完全な道順、相対パスはカレントディレクトリからの道順でしたね。.. が1つ上の階層、. が今いる場所という記号の意味も、あわせておさえておきましょう。

Windowsを普段使っている方は、ファイルのパスを指定することは、ほとんどないと思います。だからこそ、ファイルをクリックで実行するのではなく、コマンドプロンプトよりファイルを指定して実行してみると理解が深まると思います。

ITパスポート講座は、今後も続いていきます。前回の内容を復習したい方は過去問から入出力装置を解説した講座⑩を、先へ進みたい方はCPUとGPUの違いを解説した講座⑬をご覧ください。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る