pwd
pwd(print working directory)用于打印当前工作目录的绝对路径,常用来确认自己在哪,或在脚本里取出当前路径。
pwd [选项]不接受路径参数,只输出当前目录
两种路径的差别来自记账方式的不同:
- 逻辑路径直接读环境变量
$PWD,这个值是历次cd拼出来的,所以保留了走过的软链接 - 物理路径不看
$PWD,靠 inode 一级级向上回溯,得到内核眼里那条唯一的真实路径
ln -s /var/log/nginx weblogcd weblog
pwd # /home/bdathe/weblogpwd -P # /var/log/nginx软链接想建几条建几条,所以同一个目录的逻辑路径可以有很多条,但物理路径只有一条
| 选项 | 说明 |
|---|---|
-L |
输出逻辑路径(logical),路径里的软链接原样保留,shell 内建 pwd 的默认行为 |
-P |
输出物理路径(physical),把软链接全部解析成真实路径 |
1. 在脚本里取当前目录
here=$(pwd)cd /tmp && do_somethingcd "$here"直接用
$PWD效果一样,还省掉一次命令替换带来的进程创建
2. 内建 pwd 与 /bin/pwd
type pwd # pwd is a shell builtinpwd # 内建,默认 -L/bin/pwd # coreutils 的外部命令,未设 POSIXLY_CORRECT 时默认 -P两者默认行为不一致,脚本里要哪种就显式写
pwd -L或pwd -P,别赌默认值
3. 和 readlink -f 的关系
pwd -Preadlink -f .结果相同
pwd -P只管当前目录,readlink -f能对任意路径求真实路径,见 ln
man pwd- GNU Coreutils – pwd