pwd – 現在の作業ディレクトリ(カレントディレクトリ)を表示する

検索・探索
スポンサーリンク

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 を明示。
  • 一般ユーザーの注意点:
    • pwd 自体に管理者権限(sudo)は不要です。ただし、カレントディレクトリや親ディレクトリに実行(検索)権がない場合はエラーになります。
    • シンボリックリンクを多用する環境やコンテナ/chroot 環境では、見えているパス(論理)と実体(物理)が異なることに注意。
  • 設定や環境変数:
    • シェルは論理パスを PWD 環境変数に保持します。pwd -L はこの値を、pwd -P はシステムコール getcwd(3) などで実体を返す実装が一般的です。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント