pwd命令最可靠,直接输出系统当前工作目录的绝对路径;默认显示逻辑路径,pwd -p解析符号链接返回物理路径,脚本中应优先使用pwd而非$pwd变量以防失步。

直接输入 pwd 就行,这是最可靠、最无歧义的方式。 它不依赖 shell 配置、不拼错变量名、不解析符号链接出错——敲完回车,路径就出来,且和系统内部当前工作目录(CWD)完全一致。
为什么不用 echo $PWD?
虽然 $PWD 环境变量通常和 pwd 输出一样,但它本质是 shell 维护的一个“缓存值”。在极少数异常场景下会失步:
- 手动修改了
PWD变量(比如PWD=/tmp),echo $PWD会输出错误路径,但pwd仍返回真实位置 - 某些非标准 shell 或嵌入式环境里,
PWD可能未被正确初始化 - 误写成
$pwd(小写)——这个变量根本不存在,输出为空,容易被当成“当前在根目录”而误判
所以,脚本里需要绝对可靠时,别省那一个单词,就用 pwd。
pwd -P 和默认 pwd 的区别在哪?
关键在于软链接(symbolic link)路径的处理:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 默认
pwd(等价于pwd -L)显示的是你“怎么走进来的”路径,比如通过ln -s /var/log mylog && cd mylog,它会输出/path/to/mylog -
pwd -P强制解析所有软链接,返回物理磁盘上的真实路径,上例中输出/var/log
多数排查场景(如检查日志实际落盘位置、确认服务配置文件真实路径)建议用 pwd -P;日常导航确认位置,用默认 pwd 更直观。
别被 ls -ld . 这类替代方案带偏
有人用 ls -ld . | awk '{print $NF}' 提取当前路径,这其实是个陷阱:
- 输出格式依赖 locale 和 ls 实现,不同发行版或版本可能字段顺序不同
- 如果当前目录名含空格或特殊字符,
awk '{print $NF}'会截断或出错 - 多了一层管道和文本处理,纯属增加失败概率,毫无必要
连 pwd 都没记住的人,更不该靠解析 ls 输出来定位自己。
真正容易被忽略的是:当你在脚本里做路径拼接(比如 cp file.txt $PWD/../backup/),一定要确保 $PWD 没被意外覆盖过——否则整个路径逻辑就崩了。这时候,宁可多调一次 pwd 存进变量,也别信那个看似方便的环境变量。










