この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:atom
更新日時:2026-06-11 13:11:56

タイトル: cd ディレクトリの移動
SEOタイトル: Linux の cd コマンド完全ガイド(絶対パス / 相対パス / cd - / cd ~ / よく使うショートカット)

この記事の要点
  • cd はカレントディレクトリを移動するシェル組み込みコマンド。change directory の略
  • 引数なしの cdホームディレクトリに戻る(cd ~ と同じ)
  • cd -直前にいたディレクトリに戻れる。作業の往復で便利
  • 相対パスでは .(現在)..(親)~(ホーム)を組み合わせる
  • シンボリックリンクを越えるとき -P を付けると実体パスへ移動。スクリプトでの混乱を防げる

cd コマンドとは

cd はシェルのカレントディレクトリ(現在の作業位置)を変更するコマンドです。change directory の略で、bash / zsh / sh いずれにも組み込みコマンドとして用意されています。外部コマンドではないため which cd しても見つかりません。

基本構文

cd [オプション] [移動先]

使い方バリエーション

コマンド動作
cd /etc絶対パスで /etc に移動
cd srcカレント直下の src に移動(相対パス)
cd ..親ディレクトリに移動
cd ../..2 階層上に移動
cdホームディレクトリ ($HOME) に戻る
cd ~同上(ホーム)
cd ~useruser のホームディレクトリに移動
cd -直前のディレクトリに戻る

絶対パスと相対パス

移動先の指定には 2 種類あります。

種別書き方
絶対パス/ から始まるcd /var/log
相対パスカレントからの相対位置cd ../config
# /home/user にいるとき
cd /var/log         # → /var/log(絶対)
cd projects/cwiki   # → /home/user/projects/cwiki(相対)
cd ../../tmp        # → /tmp(相対、2階層上 + tmp)

便利な特殊記号

記号意味
.カレントディレクトリ
..親ディレクトリ
~自分のホームディレクトリ ($HOME)
~user指定ユーザのホーム
-直前にいたディレクトリ ($OLDPWD)

cd - で前のディレクトリに戻る

cd -直前にいたディレクトリに戻る非常に便利な機能です。深い階層と元の場所を行き来したいときに重宝します。

$ pwd
/home/user
$ cd /var/log/nginx
$ pwd
/var/log/nginx
$ cd -
/home/user
$ pwd
/home/user

シンボリックリンクの扱い(-P / -L)

シンボリックリンクを介して移動する場合、見た目のパスと実体のパスが食い違うことがあります。-L(デフォルト)はリンク先のパスをそのまま使い、-P は実体に解決します。

$ ln -s /var/log /tmp/link
$ cd /tmp/link
$ pwd        # /tmp/link(見た目)
$ pwd -P     # /var/log(実体)

$ cd -P /tmp/link
$ pwd        # /var/log

スクリプトで安定したパスが欲しいときは cd -P を使うのが安全です。

移動できないときの代表的なエラー

エラー原因
No such file or directory指定したパスが存在しない(スペルミス・大文字小文字違い)
Not a directory指定先がファイルになっている
Permission deniedそのディレクトリへの実行(x)権限がない

pushd / popd でスタック管理

頻繁にディレクトリを行き来する場合、pushd / popd でスタックに積みながら移動すると効率的です。

pushd /var/log    # スタックに積みながら移動
pushd /etc
dirs              # スタック内容を表示
popd              # 直前の場所に戻る

CDPATH で「ジャンプ先」を設定する

環境変数 CDPATH に検索パスを設定しておくと、現在地に関係なく登録ディレクトリ配下にジャンプできます。PATHcd 版と考えると分かりやすいです。

export CDPATH=".:$HOME:/var/log:/etc"

cd nginx          # /var/log/nginx に飛べる(カレントになくても)
cd projects       # $HOME/projects に飛べる

シェル設定ファイル (~/.bashrc / ~/.zshrc) に書いておくとログイン時から有効になります。スクリプト内では予期せぬ移動を引き起こす場合があるので対話シェルだけに絞るのが安全です。

環境変数 PWD / OLDPWD

シェルは現在のディレクトリを $PWD、直前のディレクトリを $OLDPWD として保持しています。スクリプトから現在地を取りたい時は pwd コマンドか $PWD を使います。

echo $PWD       # /home/user/projects
echo $OLDPWD    # 直前にいた場所

# スクリプトで「スクリプトのある場所」に移動する典型イディオム
cd "$(dirname "$0")"

スクリプト内で使う注意点

シェルスクリプトの中で cd に失敗してもそのまま処理が続いてしまうと、意図しない場所でファイル削除などの事故につながります。cd の後ろに || でエラーチェックを付けるのが定石です。

#!/bin/bash
set -e   # エラーで即終了

cd /var/www/html || { echo "cd failed"; exit 1; }
rm -rf cache/*

関連

  • コマンド一覧 — 親カテゴリ
  • Linux — OS トップ
  • pwd — 現在のディレクトリを表示
  • ls — ディレクトリ内のファイル一覧
  • pushd / popd / dirs — ディレクトリスタック