概要
pwd(Print Working Directory)は、現在作業しているディレクトリの「絶対パス」を表示するコマンドです。
Linuxのディレクトリ構造は深く複雑になりがちで、ターミナルのプロンプト設定によっては現在の場所が省略表示(例: ~/…/src)されてしまうことがあります。自分がファイルシステムのどこにいるのかを正確に把握するため、またはシェルスクリプト内でカレントディレクトリのパスを変数に格納するために頻繁に使用されます。
仕様(引数・オプション)
構文
pwd [オプション]
主なオプション
通常はオプションなしで使いますが、シンボリックリンク(ショートカットのようなもの)の中にいる場合の挙動を制御できます。
| オプション | 説明 |
| -L | シンボリックリンクをそのままパスとして表示します(Logical / デフォルト)。 |
| -P | シンボリックリンクを解決し、実体のパスを表示します(Physical)。 |
基本の使い方
現在地の確認
最も基本的な使い方は、オプションなしで実行することです。ルートディレクトリ(/)から現在の場所までの完全なパスが表示されます。
pwd
実行結果イメージ:
/home/user/documents/reports
実践コマンド
1. シンボリックリンク下での実体パス確認
システム管理では、/var/www/html が実は別のディスクへのシンボリックリンクになっている、といった構成がよくあります。
見かけ上のパス(論理パス)と、実際のファイルがあるパス(物理パス)を確認する手順です。
ここでは、/home/user/logs が /var/log へのシンボリックリンクであると仮定します。
# 1. リンクディレクトリへ移動
cd /home/user/logs
# 2. 通常のpwd(リンクのパスを表示)
pwd
# 3. 物理パスを表示するpwd(実体のパスを表示)
pwd -P
実行結果イメージ:
/home/user/logs
/var/log
2. スクリプト内で現在のパスを変数に代入する
シェルスクリプトを作成する際、実行した場所を基準に処理を行うため、pwd の結果を変数に保存する定石です。
# 現在のディレクトリパスを変数 CURRENT_DIR に格納
CURRENT_DIR=$(pwd)
# 確認のために表示
echo "Current dir is: ${CURRENT_DIR}"
実行結果イメージ:
Current dir is: /home/user/projects/script_test
カスタムポイント
- デフォルトの挙動:
- 多くのLinuxディストリビューションのbashシェルでは、オプションなしの
pwdは-L(論理パス)として動作します。
- 多くのLinuxディストリビューションのbashシェルでは、オプションなしの
- エイリアスの確認:
- 環境によっては
pwdがpwd -Pにエイリアスされている場合もあります。挙動が変だと感じたらtype pwdで確認してください。
- 環境によっては
注意点
- 削除されたディレクトリ:
- 別のターミナルで現在のディレクトリが削除された場合、
pwdを実行してもエラーになったり、パスが表示されてもlsが失敗したりする状態になります。その場合はcd ..などで移動してください。
- 別のターミナルで現在のディレクトリが削除された場合、
- スペースを含むパス:
- 出力結果にスペースが含まれる可能性があるため、スクリプトで利用する際は
"$DIR"のようにダブルクォーテーションで囲む癖をつけることが重要です。
- 出力結果にスペースが含まれる可能性があるため、スクリプトで利用する際は
応用
現在のパスをクリップボードにコピーする(Mac/WSL等)
長いパスを手動で選択してコピーするのは手間です。パイプラインを使ってクリップボード転送ツールに渡すと効率的です。
# macOSの場合
pwd | pbcopy
# Windows (WSL) の場合
pwd | clip.exe
# Linux (xclipがインストールされている場合)
pwd | xclip -selection clipboard
まとめ
pwdはシンプルなコマンドですが、シンボリックリンクが多用されるLinux環境では -P オプションの意味を知っていることがトラブルシューティングの鍵になります。自分の居場所(絶対パス)を知りたい時やスクリプトでパスを取得したい時に必須であり、実体の場所を知りたい場合は -P を付けること、削除されたディレクトリに居座り続けないことなどに注意すれば、迷子にならずに確実に作業を進めることができます。
