确定正在执行的BASH脚本的路径
  可能重复: 
  Bash脚本可以告诉它存储在哪个目录中? 
  在Windows命令脚本中,可以使用%~dp0确定当前正在执行的脚本的目录路径。  例如: 
@echo Running from %~dp0
BASH脚本中的等价物是什么?
  对于相对路径(即Windows' %~dp0的直接等价物): 
MY_PATH="`dirname "$0"`"
echo "$MY_PATH"
对于绝对的,标准化的路径:
MY_PATH="`dirname "$0"`"              # relative
MY_PATH="`( cd "$MY_PATH" && pwd )`"  # absolutized and normalized
if [ -z "$MY_PATH" ] ; then
  # error; for some reason, the path is not accessible
  # to the script (e.g. permissions re-evaled after suid)
  exit 1  # fail
fi
echo "$MY_PATH"
  假设你输入bash脚本的完整路径,使用$0和dirname ,例如: 
#!/bin/bash
echo "$0"
dirname "$0"
示例输出:
$ /a/b/c/myScript.bash
/a/b/c/myScript.bash
/a/b/c
  如有必要,请将$PWD变量的结果附加到相对路径。 
编辑:添加引号来处理空格字符。
由Stephane CHAZELAS贡献cus假设POSIX shell:
prg=$0
if [ ! -e "$prg" ]; then
  case $prg in
    (*/*) exit 1;;
    (*) prg=$(command -v -- "$prg") || exit;;
  esac
fi
dir=$(
  cd -P -- "$(dirname -- "$prg")" && pwd -P
) || exit
prg=$dir/$(basename -- "$prg") || exit 
printf '%sn' "$prg"
