pwd コマンド

現在の作業ディレクトリの完全なパス名を表示します。

概要

pwd コマンドは、現在いるディレクトリの絶対パスを表示します。これにより、ファイルシステム階層内での自分の位置を把握できます。特にディレクトリ間を移動する際や、現在の場所を参照する必要があるスクリプトを作成する際に役立ちます。

オプション

-L, --logical

論理的な現在の作業ディレクトリを表示します。パス内のシンボリックリンクは遭遇した時点で解決されます(デフォルトの動作)。

$ pwd -L
/home/user/projects

-P, --physical

物理的な現在の作業ディレクトリを表示します。すべてのシンボリックリンクが解決されます。

$ pwd -P
/var/www/html/projects

使用例

基本的な使い方

$ pwd
/home/user/documents

スクリプト内での pwd の使用

$ echo "Current directory: $(pwd)"
Current directory: /home/user/documents

論理パスと物理パスの比較

$ cd /home/user/symlink_to_projects
$ pwd -L
/home/user/symlink_to_projects
$ pwd -P
/home/user/actual/projects

ヒント:

シェルスクリプトでの使用

現在のディレクトリを変数に格納して、後でスクリプト内で参照できます:

CURRENT_DIR=$(pwd)
cd /some/other/directory
# 何か作業をする
cd "$CURRENT_DIR"  # 元のディレクトリに戻る

パスのハードコーディングを避ける

スクリプト内でパスをハードコーディングする代わりに、pwd を使用することで、異なるシステム間でスクリプトの移植性を高めることができます。

シンボリックリンクのトラブルシューティング

シンボリックリンクを扱う場合、pwd -P を使用してファイルが実際にディスク上のどこに保存されているかを確認できます。これにより、権限の問題のトラブルシューティングに役立ちます。

よくある質問

Q1. pwdecho $PWD の違いは何ですか?

A. 通常は同じ結果を表示しますが、$PWD は現在のディレクトリパスを格納する環境変数です。pwd は現在のディレクトリを積極的に判断するコマンドです。

Q2. なぜ pwd -Ppwd -L が異なる結果を表示することがありますか?

A. 現在のディレクトリにシンボリックリンクが含まれている場合に違いが生じます。-L はシンボリックリンクをそのままにしたパスを表示し、-P はすべてのシンボリックリンクを解決して実際の物理パスを表示します。

Q3. pwd はすべてのUnix系システムで同じように動作しますか?

A. 基本的な機能は同じですが、GNU/Linux、macOS、その他のUnixバリアントの間で利用可能なオプションに若干の違いがある場合があります。

参考文献

https://www.gnu.org/software/coreutils/manual/html_node/pwd-invocation.html

改訂履歴