ここにbashスクリプトがあります:
$GOPATH/
src/
build.sh
そしてbuild.shに私は持っています:
export GOPATH="$(cd $(dirname "$BASH_SOURCE") && pwd)"
build.shの含まれているディレクトリを取得するより短い方法はありますか?
スクリプトが配置されているディレクトリを取得するには、次を使用します。
readlink -f $(dirname $0)
Bashのmanページで述べたように、$0
はファイルの名前に設定されます。
readlink -f
はそのディレクトリの絶対パスを取得します。
BASH_SOURCEのアイデアを拡張し、絶対パスが含まれているかどうかを確認します。その場合は直接使用し、そうでない場合はPWDを追加します。その後、末尾のスラッシュとそれに続くものをすべて取り除き、含まれているディレクトリだけを残します。
case ${BASH_SOURCE[0]} in
( /* )
p=${BASH_SOURCE[0]}
;;
( * )
p=${PWD}/${BASH_SOURCE[0]}
;;
esac
p=${p%/*}
printf "%s\n" "$p"