pwd 是什么
pwd 输出当前工作目录的绝对路径,有逻辑与物理两种模式。-L(默认)显示逻辑路径,来自 shell 维护的 PWD 变量,路径中的软链接保持原样;-P 显示物理路径,把沿途软链接全部解析成内核视角的真实路径。差异在软链接目录里最明显:cd 进入指向 /data/app 的软链接 /srv/www 后,pwd 显示 /srv/www,pwd -P 显示 /data/app。多数发行版的 pwd 是 shell 内建命令,系统里也有独立的 /bin/pwd,两者在软链接处理上默认行为一致。
基本信息
| 适用平台 | Linux/macOS/BSD(coreutils 与 shell 内建) |
|---|---|
| 命令语法 | pwd [-L|-P] |
| 选项 | -L 逻辑路径,保留软链接(默认);-P 物理路径,解析软链接 |
| 相关变量 | $PWD 当前目录、$OLDPWD 上一次所在目录(cd - 依赖它) |
| 权限说明 | 无特殊要求,任何用户都可执行 |
典型使用场景
- 脚本自检:确认后续相对路径操作发生在预期目录
- 软链接核查:判断当前目录是链接路径还是真实路径
- 权限与配额分析:用物理路径去核对实际目录的属主与容量
- 报错信息增强:在错误输出里附上当前目录,方便事后定位
- 调试 cd 行为:确认 shell 是否按预期切换了目录
常用示例
常用示例
pwd # 逻辑路径(默认)
pwd -P # 解析软链接后的物理路径
echo "$PWD" # 直接用变量,省一次命令调用
type pwd # 确认是 shell 内建还是外部命令
cd /srv/www; pwd; pwd -P # 软链接目录下对比两种输出
cd "$(dirname "$0")"; pwd # 脚本里定位自身所在目录取路径的几种命令
| 命令 | 输出 | 典型用途 |
|---|---|---|
| pwd | 当前工作目录的逻辑路径 | 脚本里确认执行位置 |
| pwd -P | 解析软链接后的真实路径 | 核对实际操作的是哪个目录 |
| dirname "$0" | 脚本文件所在目录的相对路径 | 脚本内定位自身位置,常配 readlink -f |
| realpath . | 当前目录的规范绝对路径 | 需要完全无软链接的规范路径 |
在软链接目录里,pwd 与 pwd -P 会给出不同结果。分析磁盘占用、权限或配额时要用 -P 解析出的真实路径,否则可能把两个不同目录当成同一位置。
脚本被软链接调用时 $0 是链接路径,取脚本真实位置要用 readlink -f "$0" 再 dirname,单靠 dirname "$0" 会得到错误的目录。