pwd は、今いる作業ディレクトリ(カレントディレクトリ)の絶対パスを表示するコマンドです。
スクリプト内でのパス確認や、シンボリックリンク経由で移動した際の実体パスの確認に使います。
実務では「どのディレクトリで処理を走らせているか」のログ出力やデバッグに利用します。
bashについて、基本的な考え方や使い方については bash から参照ください。
構文(Syntax)
pwd [OPTION...]
- シェル組み込み(例: Bash 内蔵の
pwd)と外部コマンド(例:/bin/pwd)の両方が存在します。 - 物理パス(実体)か論理パス(シンボリックリンクをそのまま表示)かを、
-P/-Lで切り替えます。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-P | 物理パスを表示(シンボリックリンクを解決) | pwd -P |
-L | 論理パスを表示(シンボリックリンクを解決しない) | pwd -L |
--help | ヘルプを表示(GNU coreutils 版) | pwd --help |
--version | バージョン情報を表示(GNU coreutils 版) | pwd --version |
備考: 多くの環境でデフォルトは論理パス(
-L)ですが、実装やシェルによって挙動が異なる場合があります。確実に実体が欲しいときは-Pを明示します。
実行例
基本:現在のディレクトリを表示
pwd
出力例:
/home/USER/projects
シンボリックリンク配下での -L と -P の違い
準備 → リンク経由で移動:
mkdir -p /tmp/pwd-demo/real
ln -s /tmp/pwd-demo/real /tmp/pwd-demo/link
cd /tmp/pwd-demo/link
論理パス(リンク名のまま):
pwd -L
出力例:
/tmp/pwd-demo/link
物理パス(実体へ解決):
pwd -P
出力例:
/tmp/pwd-demo/real
シェル組み込みと外部コマンドを見分ける
type -a pwd
出力例(例):
pwd is a shell builtin
pwd is /bin/pwd
外部コマンドを明示的に使う例:
/bin/pwd -P
出力例:
/tmp/pwd-demo/real
エラー例:権限がない(再現用)
実体験として、カレントディレクトリの実体に実行権限がないと pwd が失敗します。
d=$(mktemp -d)
cd "$d"
chmod 000 "$d"
pwd
出力例:
pwd: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
後片付け(権限を戻して削除):
chmod 700 "$d"; cd /; rmdir "$d"
関連コマンド
cd: 作業ディレクトリを移動する。ls: ディレクトリの内容を一覧表示する。readlink/realpath: シンボリックリンクを解決して実体パスを取得する。type: コマンドがシェル組み込みか外部かを表示する。stat: ファイルやディレクトリの詳細情報を表示する。echo $PWD: シェルが保持する現在の論理パス(環境変数)を表示する。
備考
- 実装差分:
- Bash などのシェルには組み込みの
pwdがあり、/bin/pwd(GNU coreutils など)も存在します。type -a pwdで確認できます。 - BusyBox や BSD 系でも概ね
-L/-Pをサポートしますが、デフォルト挙動は実装に依存する場合があります。物理パスが必要なら-Pを明示。
- Bash などのシェルには組み込みの
- 一般ユーザーの注意点:
pwd自体に管理者権限(sudo)は不要です。ただし、カレントディレクトリや親ディレクトリに実行(検索)権がない場合はエラーになります。- シンボリックリンクを多用する環境やコンテナ/chroot 環境では、見えているパス(論理)と実体(物理)が異なることに注意。
- 設定や環境変数:
- シェルは論理パスを
PWD環境変数に保持します。pwd -Lはこの値を、pwd -Pはシステムコールgetcwd(3)などで実体を返す実装が一般的です。
- シェルは論理パスを
参考
- manページ:
man 1 pwd(各ディストリビューション付属) - GNU coreutils(
pwd)ドキュメント: https://www.gnu.org/software/coreutils/manual/html_node/pwd-invocation.html - Bash リファレンス(組み込み
pwd): https://www.gnu.org/software/bash/manual/ - BusyBox
pwd(applet): https://busybox.net/downloads/BusyBox.html

コメント