pwd 是 "Print Working Directory" 的缩写,是 Linux/Unix 系统中最基础也最常用的命令之一。它的核心功能极其简单:显示你当前在文件系统中所处的确切位置(绝对路径)。
在日常操作中,pwd 能帮助你快速确认当前目录,避免因路径混淆而误操作文件,是命令行导航中不可或缺的辅助工具。
🔧 语法与核心选项
pwd 的语法非常简洁,其核心选项主要用来处理**符号链接(**Symbolic Link ) 这一特殊情况。
命令格式:
bash
pwd [选项]
核心选项详解:
| 选项 | 说明 |
|---|---|
| -L, --logical | 显示逻辑路径 。即当前 Shell 认为你所处的路径,包括其中可能存在的符号链接 名。这是部分 Shell 中 pwd 命令的默认行为。 |
| -P, --physical | 显示物理路径 。此选项会解析路径中所有的符号链接,显示其指向的真实 目标位置,忽略任何链接名。这也是部分 Shell 中 pwd 命令的默认行为。 |
⚙️ 工作原理:pwd 如何获取路径?
当你执行 pwd 命令时,系统主要通过两种方式来获取当前目录的路径:
- 读取 PWD**环境变量** :为了提高效率,Shell 会将你上次进入的目录路径存储在名为 PWD 的环境变量中。pwd -L 选项正是直接读取并输出这个变量的值。
- 调用 getcwd()系统调用 :如果 $PWD 变量不存在、值不正确(例如被手动修改过),或者你使用了 -P 选项,pwd 会通过 getcwd() 系统调用直接向内核询问当前工作目录的"真实"物理路径。
💡 深入理解:逻辑路径 vs. 物理路径 (-L vs. -P)
这是 pwd 命令中最重要的一个概念区分。为了便于理解,我们通过一个模拟示例来演示:
- 首先,在 /tmp 目录下创建一个名为 real_dir 的真实目录。
- 然后,创建一个指向 real_dir 的符号链接,名为 link_dir。
- 最后,通过 cd 命令进入这个符号链接 link_dir。
在不同选项下,pwd 的输出会截然不同:
- 使用 pwd -L**(逻辑路径)** :你会看到 /tmp/link_dir。
它告诉你:"你是通过这个符号链接进来的",所以显示的路径中包含了链接名本身。
- 使用 pwd -P**(物理路径)** :你会看到 /tmp/real_dir。
它告诉你:"这个链接实际上指向了这个真实位置",所以显示的路径是解析后最终的物理路径。
💎 常见使用场景与示例
1. 直接使用 pwd:显示当前目录
这是最基础也是最常用的用法。执行后,系统会直接输出你当前的绝对路径。
bash
$ pwd
/home/your_username
2. 在 Shell 脚本中使用 pwd
在脚本中,pwd 非常有用,可以用来获取脚本运行的目录,或构建其他文件的绝对路径。
- 获取并存储当前路径 :
bash
#!/bin/bash
#将当前目录路径存储在变量中
current_dir=$(pwd)
echo "脚本正在此目录中运行: $current_dir"
- 构建绝对路径 :
bash
#动态生成当前目录下"data.txt"文件的完整路径
file_path="$(pwd)/data.txt"
echo "文件的完整路径是: $file_path"