更轻松地获取容器目录

更轻松地获取容器目录

我这里有一个 bash 脚本:

$GOPATH/
     src/
     build.sh

在 build.sh 中我有:

export GOPATH="$(cd $(dirname "$BASH_SOURCE") && pwd)"

有没有更短的方法来获取 build.sh 的包含目录?

答案1

要获取脚本所在的目录,请使用以下命令:

readlink -f $(dirname $0)

正如 bash 手册页中所述,$0设置为文件名。

readlink -f获取该目录的绝对路径。

答案2

扩展BASH_SOURCE思想,检查是否包含绝对路径;如果是,则直接使用,否则在前面加上 PWD。然后,去掉尾部斜杠及其后面的任何内容,只留下包含的目录:

case ${BASH_SOURCE[0]} in
  ( /* )
        p=${BASH_SOURCE[0]}
        ;;
  ( * )
        p=${PWD}/${BASH_SOURCE[0]}
        ;;
esac

p=${p%/*}
printf "%s\n" "$p"

相关内容