在Linux Shell脚本中得到当前脚本所在路径

正确的做法是

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

搜索时经常看到有人说

1
DIR=$(cd $(dirname $0);pwd)

这种写法是有问题的,它不能被用于通过source调用的脚本

比如我们需要通过一个.sh设置环境变量,这个环境变量的值需要用到.sh所在路径,那我们就需要通过source去调用脚本。