2010年1月13日星期三

shell脚本中cd `dirname $0` 是什么意思

1. dirname - strip non-directory suffix from file name,翻译成白话就是,从输入的字符串中将目录截取出来,它不会去检查目录是否存在。
例如,dirname /a/b/c/d ,运行结果是/a/b/c

2. `command` ,将命令的执行结果作为字符串返回。也可以写成$(command)

3. $0,命令行的第一个参数,代表命令本身

4. dirname $0,将命令的路径截取出来

5. `dirname $0`,返回命令的路径

6. cd `dirname $0`,进入命令所在的目录

那位兄弟说了,pwd不是很简单,干嘛写的这么复杂dirname $0。

pwd取的当前路径,反应的是你在什么路径下执行命令,和我们想取得命令所在的目录还是有很大区别。

例如我们有个脚本/home/admin/bin/a.sh
echo $(dirname $0) echo $(pwd)

在/home/admin/bin下执行
./a.sh
结果是:
.
/home/admin/bin
这两个结果都是正确的。

在/home/admin目录下执行
bin/a.sh
结果是:
bin
/home/admin
可以看到区别了。不管在什么目录下执行命令,$(dirname $0)总是能命令所在的路径。

没有评论: