コンテナディレクトリへのより簡単なアクセス

コンテナディレクトリへのより簡単なアクセス

ここに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"

関連情報