类似php中的魔术常量__DIR__,在Shell脚本中可以这样获取绝对目录

1
2
__DIR__=`cd "$(dirname "$0")"; pwd`
echo ${__DIR__}

有时候,执行文件为软链接,但我们需要拿到它的实际目录,可以这样做

1
2
3
4
5
6
7
8
__FILE__="$0"
REAL_FILE=`readlink "${__FILE__}"`
if [ ! -z "${REAL_FILE}" ]; then
__FILE__="${REAL_FILE}"
fi

__DIR__=`cd "$(dirname "${__FILE__}")"; pwd`
echo ${__DIR__}