BASH_EOURCE和BASH_SOURCE[0]的作用都是一样的,就是取得当前执行的shell脚本的相对路径
如果希望获得,当前执行脚本的绝对路径,可以采用以下方式:
DIR_T="$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
1 #!/bin/bash
2
3 echo $0 $1 $2
4
5 echo "BASH_SOURCE = ${BASH_SOURCE}"
6 echo "BASH_SOURCE[0] = ${BASH_SOURCE[0]}"
7 echo "dirname BASH_SOURCE[0] = $(dirname "${BASH_SOURCE[0]}")"
8 DIR_T="$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9 echo "DIR_T=$DIR_T"
执行结果:
./build_test.sh kernel
BASH_SOURCE = ./build_test.sh
BASH_SOURCE[0] = ./build_test.sh
dirname BASH_SOURCE[0] = .
DIR_T=/home/highgreat-xyw2018/Documents/share-2018xyw/rk3288_linux
./build_test.sh
/home/highgreat-xyw2018/Documents/share-2018xyw/rk3288_linux