SHELL【3】-关于 BASH_SOURCE


前言

要明白这句话的意思

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

一、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的当前目录。


版权声明:本文为m0_46535940原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。