news 2026/7/1 17:18:40

Linux命令-pwd(打印当前工作目录)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux命令-pwd(打印当前工作目录)

Linux命令-pwd(打印当前工作目录)

    • 快速参考
    • 命令语法
    • 常用选项
    • 核心概念:逻辑路径 vs 物理路径
    • 实战示例
      • 1. 基础使用
      • 2. 逻辑路径(-L)示例
      • 3. Shell 内置 vs 外部命令
      • 4. 脚本中的实用模式
      • 5. 在提示符中使用 pwd
      • 6. 高级:符号链接迷宫排查
      • 7. $PWD 环境变量
    • 发行版差异
    • pwd vs realpath vs readlink -f
    • 总结

快速参考

pwd(Print Working Directory)是 Linux 中最简单也最常用的命令之一——它告诉你"我现在在哪"。尽管功能看似琐碎,但pwd在符号链接密集的环境中有着微妙的差异:pwd默认(-L)显示逻辑路径,而pwd -P显示物理真实路径。

在 Linux 文件系统的迷雾中,pwd就是你的指南针。它只有两个选项,但理解它们的区别能帮你避免在符号链接迷宫中迷失方向。

命令语法

pwd [选项]

常用选项

选项功能
-L显示逻辑路径(默认,包含符号链接)
-P显示物理路径(解析所有符号链接)
--help显示帮助
--version显示版本

核心概念:逻辑路径 vs 物理路径

物理文件系统布局: / ├── var/ │ └── run/ │ └── myservice/ │ └── data/ ├── tmp/ │ └── runtime → /var/run/myservice/ # 符号链接 当你执行: $ cd /tmp/runtime/data/ $ pwd (/tmp/runtime/data/ 逻辑路径,你看到的路径) $ pwd -P (/var/run/myservice/data/ 物理路径,文件系统真实位置)

实战示例

1. 基础使用

# 最基本用法$pwd/home/alice# 在脚本中获取当前目录$CURRENT_DIR=$(pwd)$echo"Working in:$CURRENT_DIR"Working in: /home/alice/projects/myapp# 使用反引号(旧语法)$OLDDIR=`pwd`$echo$OLDDIR# 保存当前目录并恢复(脚本常用)$SAVED_DIR=$(pwd)$cd/tmp $# ... do something in /tmp ...$cd"$SAVED_DIR"# 回到原目录

2. 逻辑路径(-L)示例

# -L 是默认行为:为你显示你"如何来到"这个目录的$mkdir-p/var/data/storage $ln-s/var/data/storage /tmp/mystorage $cd/tmp/mystorage $pwd-L/tmp/mystorage# 你使用的符号链接路径$pwd-P/var/data/storage# 文件系统上的真实路径# 另一个例子$cd/usr/lib $pwd/usr/lib $ls-ld/usr/lib lrwxrwxrwx1root root7Jan12023/usr/lib ->usr/lib# /usr/lib 实际上是符号链接!$pwd-P/usr/usr/lib# 等等,这不对...# 实际上在现代系统中 /usr/lib 指向的是 usr/lib (相对路径)# 更常见的例子:$ls-ld/lib lrwxrwxrwx1root root7Jan12023/lib ->usr/lib $cd/lib $pwd-L/lib $pwd-P/usr/lib

3. Shell 内置 vs 外部命令

# pwd 既是 Shell 内置命令,也是外部可执行程序# Shell 内置版本(bash 使用)$typepwdpwdis a shellbuiltin# 外部程序版本$whichpwd/usr/bin/pwd $ /usr/bin/pwd /home/alice# 主要区别:Shell 内置的 pwd 记住了你的"逻辑"路径# 外部 /usr/bin/pwd 行为取决于选项# 使用外部程序的 pwd$ /usr/bin/pwd-P# 强制使用外部命令而非内置$commandpwd-P$envpwd-P

4. 脚本中的实用模式

# 获取脚本所在目录的绝对路径(重要!)SCRIPT_DIR="$(cd "$(dirname"${BASH_SOURCE[0]}")"&&pwd-P)" echo "Script directory:$SCRIPT_DIR" # 无论脚本被从哪里调用,都能正确获取真实目录 # 更健壮的版本 get_script_dir() { local source="${BASH_SOURCE[0]}" while [ -h "$source" ]; do local dir="$(cd-P"$(dirname"$source")"&&pwd)" source="$(readlink"$source")" [[$source!= /* ]] && source="$dir/$source" done cd -P "$(dirname"$source")" && pwd } SCRIPT_DIR=$(get_script_dir)# 创建临时目录并切换 work_in_temp() { local savedir=$(pwd)local tmpdir=$(mktemp-d)cd "$tmpdir" echo "Workingin$tmpdir" # ... do work ... cd "$savedir" rm -rf "$tmpdir" } # 相对路径转绝对路径 resolve_path() { local path="$1" if [ -d "$path" ]; then (cd "$path" && pwd -P) else (cd "$(dirname"$path")" && echo "$(pwd-P)/$(basename"$path")") fi } # 检查是否在某个目录下 is_under_path() { local check_dir="$1" [[ "$(pwd-P)" == "$(cd"$check_dir"&&pwd-P)"* ]] } if is_under_path "/home"; then echo "Working inside /home"fi

5. 在提示符中使用 pwd

# PS1 中显示当前目录$PS1='[\u@\h \W]\$ '# \W 显示当前目录名[alice@server projects]$# 只显示目录名$PS1='[\u@\h \w]\$ '# \w 显示完整路径[alice@server ~/projects/myapp]$# 自定义提示符中显示物理路径$PS1='[\u@\h $(pwd -P)]\$ '# 截断长路径short_pwd(){localdir=$(pwd-P)localhome=${HOME%/}dir=${dir/#$home/\~}echo"$dir"}$PS1='[\u@\h $(short_pwd)]\$ '

6. 高级:符号链接迷宫排查

# 场景:你 cd 到了一个目录,但感觉路径不对# 第一步:查看逻辑路径$pwd/opt/myapp/config# 第二步:查看物理路径$pwd-P/usr/local/myapp-v2.3/config# 第三步:追踪符号链接链$ namei-l/opt/myapp f: /opt/myapp drwxr-xr-x root root / drwxr-xr-x root root opt lrwxrwxrwx root root myapp ->/usr/local/myapp-v2.3# 第四步:查看所有父目录是否有符号链接$ readlink-f.# 同样给出物理路径/usr/local/myapp-v2.3/config# 第五步:如果觉得迷惑,使用 realpath$ realpath./usr/local/myapp-v2.3/config# 对比:逻辑 vs 物理$echo"Logical:$(pwd-L)"Logical: /opt/myapp/config $echo"Physical:$(pwd-P)"Physical: /usr/local/myapp-v2.3/config

7. $PWD 环境变量

# Shell 维护一个 $PWD 环境变量$echo$PWD/home/alice# cd 后自动更新$cd/tmp $echo$PWD/tmp# $PWD 通常等于 pwd -L(逻辑路径)$cd/tmp/mystorage# (符号链接目录)$echo$PWD/tmp/mystorage $pwd-L/tmp/mystorage $pwd-P/var/data/storage# 注意:$PWD 和 pwd -P 可能不同!

发行版差异

pwd在所有 Linux 发行版和 Unix 系统中行为完全一致(POSIX 标准)。

系统Shell 内置外部命令
所有 Linuxbash/zsh/dash 都内置/usr/bin/pwd(coreutils)
macOSbash/zsh 内置/bin/pwd(BSD)
FreeBSDsh/bash/zsh 内置/bin/pwd
BusyBoxash 内置/bin/pwd

pwd vs realpath vs readlink -f

命令输出用途
pwd -P物理路径获取真实文件系统路径
realpath .物理路径(解析所有符号链接)同 pwd -P
readlink -f .物理绝对路径同 realpath
pwd -L逻辑路径保留符号链接的路径
# 三者等价$pwd-P/var/data/storage $ realpath./var/data/storage $ readlink-f./var/data/storage

总结

pwd简单但不"简陋":

  • 获取当前目录最基本的方式
  • -Pvs-L的区别是理解文件系统符号链接的关键
  • 在脚本中用$(cd "$(dirname "$0")" && pwd -P)获取脚本的真实物理路径
  • Shell 内置的pwd和外部程序的/usr/bin/pwd通常行为一致

在符号链接密集的环境中(如/lib/usr/lib、容器挂载点),pwd -P是你区分"你以为在哪"和"你实际在哪"的唯一方式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 17:27:31

三分钟带你认识有机溶质转运蛋白(OST)家族

有机溶质转运蛋白(OST)有机溶质转运蛋白(Organic Solute Transporter,OST)家族是一类重要的膜转运蛋白,在维持机体胆汁酸和固醇类物质的稳态平衡中发挥着核心作用。OST蛋白属于溶质载体(SLC&…

作者头像 李华
网站建设 2026/6/30 17:27:29

AI引发存储危机,苹果Mac、iPad涨价,iPhone 18会跟进吗?

【苹果突发全球涨价】北京时间6月25日深夜,苹果突然宣布面向全球市场上调Mac、iPad以及家居设备价格。根据苹果官方数据,MacBook Neo起售价从599美元升至699美元,MacBook Air从1099美元升至1299美元,14英寸入门款MacBook Pro从169…

作者头像 李华
网站建设 2026/6/30 17:27:27

服务周到的牙科诊所如何挑选

挑选服务周到的牙科诊所时,可以从资质合规、服务项目、收费透明、环境消毒等多个维度综合考量。以下测评以宁海白炻口腔诊所有限公司为例,基于公开资料和诊所介绍整理,未进行独立体验测试,信息供参考。资质合规与便民定位 宁海白炻…

作者头像 李华
网站建设 2026/6/30 17:27:24

RocketMQ 从0到1

RocketMQ 是阿里开源的高可用、高吞吐、低延迟分布式消息中间件,专为金融、电商、高并发业务设计,具备消息可靠投递、事务消息、延时队列、集群容错、削峰填谷等核心能力,是国内互联网企业主流的消息队列选型。本文对标 Redis 实战指南&#…

作者头像 李华
网站建设 2026/6/30 17:27:20

市级工程实验室申报条件:

1、申请单位应具有较强的综合实力。申请单位应为本市注册并建设运行的具有独立法人资格的企业、科研机构或高等院校。申请单位为企业的,其固定资产原值应不低于2500万元,或者研发投入占销售收入的比重达到7%以上;申请单位为科研机构或高等院校…

作者头像 李华