DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
這是stackoverflow上推薦的方法
http://stackoverflow.com/questions/4774054/reliable-way-for-a-bash-script-to-get-the-full-path-to-itself
我看了兩遍,不明覺厲
後來改了一下:
#DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
S0="${BASH_SOURCE[0]}"
DIRNAME="$( dirname "$S0")"
DIR="$( cd "$DIRNAME" && pwd)"
echo "$S0"
echo "$DIRNAME"
echo "$DIR"
運行腳本,輸出:
./build/jenkins/tesh.sh
./build/jenkins
/Users/heliclei/.jenkins/jobs/dailybuild-develop-ios/workspace/build/jenkins
S0是腳本相對於當前目錄的路徑,是相對路徑
再用dirname命令得到腳本的目錄名,也是相對路徑
用cd命令切換到腳本所在目錄,再執行pwd命令,
就得到了腳本所在目錄的絕對路徑
推薦一本學習bash腳本的好書《Bash Beginners Guide》