pwd最直接可靠,因$PWD变量可能被篡改而失真;pwd -L显示逻辑路径(保留软链接),pwd -P解析为真实物理路径,脚本中推荐用$(pwd -P)确保路径准确。

pwd 是最直接、最可靠的方式,输出结果就是当前工作目录的绝对路径,不需要额外安装或配置。
为什么不用 echo $PWD 就行?
它确实能输出相同路径,但有隐含风险:$PWD 是 shell 维护的环境变量,可能被意外修改(比如脚本里写了 PWD=/tmp),这时 echo $PWD 会返回错误值,而 pwd 命令会绕过变量、调用系统接口重新获取真实路径。所以调试脚本或排查路径异常时,优先用 pwd。
pwd -P 和 pwd -L 的区别在哪
当目录路径中包含符号链接时,两者行为不同:
-
pwd -L(默认行为)显示你“怎么进来的”:保留符号链接名,例如/var/www(即使它是个指向/srv/www的链接) -
pwd -P显示你“实际在哪”:解析所有符号链接,返回真实物理路径,例如/srv/www - 在自动化脚本中涉及文件写入、路径拼接时,建议显式用
pwd -P,避免因链接导致路径不一致
脚本里怎么安全获取当前路径
别只写 CURRENT_DIR=`pwd`,反引号嵌套难读且易出错。推荐:
- 用
CURRENT_DIR=$(pwd -P),明确要求物理路径 - 如果需要拼接子路径,直接写
CONFIG_PATH="$(pwd -P)/config.yaml",括号保证求值时机 - 避免用
cd $(dirname $0)来定位脚本所在目录——那得到的是脚本位置,不是执行时的工作目录;pwd才反映用户当前在哪
user@host:~/docs$)里的路径只是 shell 渲染的近似值,可能被自定义截断、省略或误判;ls 或 cd .. 都是间接验证,只有 pwd 是内核级确认。


















