「絶対パスと相対パスって何が違うの?」
Linuxを使い始めたころ、パス指定でハマった経験がある方は多いはずです。
ターミナルでコマンドを入力するたびに、どこから数えてパスを書けばいいか迷う
——そのモヤモヤを今日すっきり解消しましょう。
この記事では、Linuxの絶対パスと相対パスの違いを実行例つきで解説します。
cdコマンドの実践的な使い方・pwdで現在地確認・よくあるエラーの対処まで、
RHEL 9.4 / Ubuntu 24.04 LTS で動作確認した内容をお届けします。
この記事のポイント
・絶対パスは / から始まり、現在地に関係なく同じ場所を指す
・相対パスは現在のディレクトリを基点として書く(./、../、~/)
・cd、pwd を組み合わせると迷子にならない
・「No such file or directory」の大半はパスの書き間違いで起きる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
絶対パスと相対パスの基本的な違い
1. 絶対パスとは何か
絶対パスとは、ファイルシステムの最上位である/(ルートディレクトリ)から始まるパスのことです。どのディレクトリにいても、同じ場所を確実に指せるのが特徴です。
例として、Apache の設定ファイルを絶対パスで指定すると次のようになります。
# 絶対パスは / から始まる /etc/httpd/conf/httpd.conf /var/log/messages /home/tanaka/work/script.sh
シェルスクリプトや cron など、自動化の文脈では絶対パスを使うのが鉄則です。
2. 相対パスとは何か
相対パスとは、現在いるディレクトリ(カレントディレクトリ)を基点として書くパスです。絶対パスと異なり、自分が今どこにいるかによって意味が変わります。
相対パスで使う記号を覚えておきましょう。
・./:カレントディレクトリ自身を指す(省略可能なことも多い)
・../:1つ上の親ディレクトリを指す
・~/:ホームディレクトリを指す(厳密には絶対パスの別名)
たとえば、現在
/home/tanaka/work にいる場合:# 現在地: /home/tanaka/work [tanaka@server work]$ pwd /home/tanaka/work # 相対パスで親ディレクトリに移動 [tanaka@server work]$ cd .. [tanaka@server tanaka]$ pwd /home/tanaka # 相対パスでさらに上へ [tanaka@server tanaka]$ cd ../.. [tanaka@server /]$ pwd /
cdコマンドの実践例
1. 絶対パスで移動する
どこにいても確実に目的地に移動したい場合は絶対パスを使います。# どこにいても /etc に移動できる [tanaka@server ~]$ cd /etc [tanaka@server etc]$ pwd /etc # ホームディレクトリ直下の work に移動 [tanaka@server etc]$ cd /home/tanaka/work [tanaka@server work]$ pwd /home/tanaka/work
2. 相対パスで移動する
現在地からの相対的な位置で移動する方法です。作業ディレクトリ内を行き来するときは相対パスの方が入力が短くて済みます。
# 現在地: /home/tanaka/work [tanaka@server work]$ pwd /home/tanaka/work # 1つ上へ [tanaka@server work]$ cd .. [tanaka@server tanaka]$ pwd /home/tanaka # サブディレクトリへ移動(./は省略可) [tanaka@server tanaka]$ cd work/scripts [tanaka@server scripts]$ pwd /home/tanaka/work/scripts # 2階層上へ一気に移動 [tanaka@server scripts]$ cd ../.. [tanaka@server tanaka]$ pwd /home/tanaka
3. ホームディレクトリへ移動する
~(チルダ)はホームディレクトリの絶対パスを短く書いたものです。ユーザー名 tanaka のホームは
/home/tanaka ですが、~ と書けば同じ意味になります。# ~ はホームディレクトリへの近道 [tanaka@server etc]$ cd ~ [tanaka@server ~]$ pwd /home/tanaka # cd だけでも同じ(引数なしはホームに戻る) [tanaka@server etc]$ cd [tanaka@server ~]$ pwd /home/tanaka # ~ を使ってホーム以下のパスを指定 [tanaka@server /var/log]$ cd ~/work/scripts [tanaka@server scripts]$ pwd /home/tanaka/work/scripts
4. pwdで現在地を確認する
迷ったときはpwd(Print Working Directory)で現在地を確認します。このコマンドは常に絶対パスを返すので、相対パスを使った後の確認に非常に便利です。
# 現在地を確認 [tanaka@server ~]$ pwd /home/tanaka # 移動後に確認 [tanaka@server ~]$ cd /var/log [tanaka@server log]$ pwd /var/log
よくあるエラーと対処法
1. 「No such file or directory」の原因と対処
Linuxのパス指定で最も多いエラーです。主な原因は次の3つです。・タイプミス:大文字/小文字の違いに注意(Linuxはケースセンシティブ)
・パスの起点の誤り:相対パスが今いる場所から書かれていない
・ファイル/ディレクトリが存在しない:ls で事前確認を
# 現在地: /home/tanaka [tanaka@server tanaka]$ cd work/Scripts bash: cd: work/Scripts: No such file or directory # → 実際のディレクトリ名は「scripts」(小文字) # ls でディレクトリ名を確認してから移動 [tanaka@server tanaka]$ ls work/ scripts docs tmp [tanaka@server tanaka]$ cd work/scripts [tanaka@server scripts]$ pwd /home/tanaka/work/scripts
2. シェルスクリプトでよくあるパスのミス
スクリプト内でパスを書くときは、相対パスではなく絶対パスを使うことを強くお勧めします。スクリプトが cron や別のユーザーから実行されると、カレントディレクトリが変わるためです。
# NG: 相対パスはスクリプトの実行場所に依存する cat ./config.conf # OK: 絶対パスにすれば実行場所に関係なく動く cat /etc/myapp/config.conf # スクリプト内で自分のディレクトリを取得したい場合 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" CONFIG_FILE="${SCRIPT_DIR}/config.conf"
応用:TabキーでパスをAutoComplete
ディレクトリ名を途中まで入力して Tab キー を押すと、残りが自動補完されます。タイプミスを防ぎながら入力速度も上がるので、ぜひ習慣にしてください。
# /etc/htt まで入力してTabを押す → /etc/httpd/ と補完される [tanaka@server ~]$ cd /etc/htt[Tab] [tanaka@server ~]$ cd /etc/httpd/ # 候補が複数あるときはTabを2回押すとリストが表示される [tanaka@server ~]$ cd /etc/h[Tab][Tab] host.conf hostname hosts hosts.allow hosts.deny httpd/
本記事のまとめ
絶対パスと相対パスの違いを整理します。| パス表現 | 起点 | 例 | 使いどころ |
|---|---|---|---|
| 絶対パス | / (ルート) | /etc/httpd/conf/httpd.conf |
スクリプト・cron・設定ファイル |
| 相対パス(./) | カレントディレクトリ | ./script.sh |
カレントディレクトリ内の実行 |
| 相対パス(../) | 親ディレクトリ | cd ../../var/log |
近隣ディレクトリへの移動 |
| ホームパス(~/) | ホームディレクトリ | ~/work/scripts |
ホーム以下への移動・参照 |
| cd だけ / cd ~ | ホームディレクトリ | cd |
どこからでもホームに戻る |
| pwd | - | pwd |
現在地の絶対パスを確認 |
pwd で現在地確認、ファイルが見当たらなければ ls で中身確認、この2コマンドの組み合わせで「No such file or directory」は大半解決できます。
関連記事:Linuxのディレクトリ構造を一覧で理解する
関連記事:Linuxのネットワーク設定を確認する
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
