pwd是shell内置命令,开箱即用;默认pwd -l显示逻辑路径(依赖$pwd变量),pwd -p才返回真实物理路径,脚本中应优先使用$(pwd -p)确保路径准确性。

不需要安装 pwd —— 它是 shell 内置命令,所有主流 Linux 发行版(包括 Ubuntu、CentOS、Debian、Arch)都自带,开箱即用。
为什么直接输 pwd 就能用,但有时结果“不对”?
因为 pwd 默认显示的是逻辑路径(-L),它读取的是 $PWD 环境变量的值,而不是实时查询文件系统。当你通过符号链接进入目录时,比如:
ln -s /var/www/html mywebcd myweb- 此时
pwd输出/home/user/myweb,但真实位置是/var/www/html
这不是 bug,而是设计行为:shell 记录的是你“怎么走进来的”,不是“实际在哪”。若需真实路径,必须显式加 -P。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
pwd -P 和 pwd -L 的关键区别
二者输出可能完全不同,尤其在软链接、容器挂载或 NFS 路径中:
-
pwd -L:等价于echo $PWD,快但不可靠——$PWD可被手动篡改,或在目录被删除后仍返回旧值 -
pwd -P:调用getcwd()系统调用,遍历..目录向上解析,返回真实物理路径;若中间某级被删,会报错pwd: error retrieving current directory: getcwd: cannot access parent directories - 注意:
/bin/pwd(外部命令)默认行为是-P,而 bash 内置pwd默认是-L;执行type pwd可确认当前用的是哪个
脚本里该用 $(pwd) 还是 $(pwd -P)?
绝大多数场景下,必须用 $(pwd -P),否则路径拼接会出错:
- 构建相对路径(如
CONFIG_PATH="$SCRIPT_DIR/../conf/app.conf")时,若$SCRIPT_DIR是软链接路径,上层目录计算就偏了 - Docker 或 systemd 服务中工作目录常由软链接设定,
pwd -L会导致配置加载失败 - 安全敏感操作(如 chown、chmod)依赖真实路径,逻辑路径可能指向错误 inode
- 简写建议:在脚本开头统一定义
ROOT_DIR=$(pwd -P),后续全部基于它拼接
最易被忽略的一点:即使 pwd 显示正常,也不能证明该路径当前可访问——目录可能已被 rm -rf 删除,但 shell 仍持有着它的 inode 引用,pwd -P 才是唯一能验证真实可达性的方法。










