BASH_SOURCE

BASH_SOURCE[0] 等价于 BASH_SOURCE, 取得当前执行的shell文件所在的路径及文件名。
如/home/abc/test.sh 内容如下:

#!/bin/sh
echo "${BASH_SOURCE[0]}"
echo "${BASH_SOURCE]}"
echo "$( dirname "${BASH_SOURCE[0]}" )"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $DIR

若当前目录在/home/,执行source ./abc/test.sh, 则输出:

./abc/test.sh
./abc/test.sh
./abc/
/home/abc

总之:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 

得到shell脚本文件所在完整路径(绝对路径)及文件名(无论source,sh,.三种调用方式),且不改变shell的当前目录。

posted on 2016-06-20 10:58  walkwalkwalk  阅读(462)  评论(0编辑  收藏  举报

导航