pwd和dirname命令的区别

1. pwd

当前shell窗口中的目录。执行任何shell命令前。
如果是在某个shell脚本里调用pwd,返回执行该shell脚本前shell窗口中的目录。
这和该shell脚本所在的目录有区别 (例如,通过PATH执行某个shell命令)

2. dirname

dirname file: 列出文件所在的目录(去除了该文件后的路径)
但此时可能会返回绝对路径,也可能是相对路径。如:

.
..
../a/b
/a/b/c

对根目录dirname还是根目录。


3. 如何在脚本执行时获得当前脚本的路径

只需要调用dirname $0即可。
但要保证返回的必然是绝对路径。只需要利用和cd和pwd结合使用即可。

# 获取当前命令所在目录
PRG= $(dirname "$0")
# 获取当前命令目录的指定相对路径
PRG= $(dirname "$0")/..
# 通过dirname获取路径后再转成绝对路径
PRG= $(dirname "$0")
AB_PATH=$(cd "$PRG" && pwd)

4. 根据文件真实路径

即如果是软链则会返回真实路径

ls -ld file |awk '{print $(NF)}'

你可能感兴趣的:(Shell,linux,shell,pwd,dirname)