Linux命令-pwd(打印当前工作目录)
Linux命令-pwd打印当前工作目录快速参考命令语法常用选项核心概念逻辑路径 vs 物理路径实战示例1. 基础使用2. 逻辑路径-L示例3. Shell 内置 vs 外部命令4. 脚本中的实用模式5. 在提示符中使用 pwd6. 高级符号链接迷宫排查7. $PWD 环境变量发行版差异pwd vs realpath vs readlink -f总结快速参考pwdPrint 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)$echoWorking in:$CURRENT_DIRWorking in: /home/alice/projects/myapp# 使用反引号旧语法$OLDDIRpwd$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/lib3. 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-P4. 脚本中的实用模式# 获取脚本所在目录的绝对路径重要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_dirpwd-P)* ]] } if is_under_path /home; then echo Working inside /homefi5. 在提示符中使用 pwd# PS1 中显示当前目录$PS1[\u\h \W]\$ # \W 显示当前目录名[aliceserver projects]$# 只显示目录名$PS1[\u\h \w]\$ # \w 显示完整路径[aliceserver ~/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 物理$echoLogical:$(pwd-L)Logical: /opt/myapp/config $echoPhysical:$(pwd-P)Physical: /usr/local/myapp-v2.3/config7. $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/pwdBusyBoxash 内置/bin/pwdpwd vs realpath vs readlink -f命令输出用途pwd -P物理路径获取真实文件系统路径realpath .物理路径解析所有符号链接同 pwd -Preadlink -f .物理绝对路径同 realpathpwd -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是你区分你以为在哪和你实际在哪的唯一方式。

相关新闻