スクリプトの実際のパスが含まれています。

スクリプトの実際のパスが含まれています。

埋め込みスクリプトが含まれているかどうかを知って実際のパスを取得できますか?

sub.sh基本ロジックを実行する前に、ユーザーがスクリプトグループにアクセスできることを確認するためにそれを呼び出すスクリプトがあるとします。

#...
mypath=`realpath -e $0`
#if blablabla ... check mypath against user groups...
#
#...

上記のスクリプトは、次のように他のスクリプトに含めることができます。

#...
. sub.sh
#...

ただし、別のスクリプト内に含まれているため、呼び出し側スクリプトに対してチェックが実行されますが、これは望ましい効果ではありません。

ベストアンサー1

BASH_SOURCEおそらく配列(bashで)を探しているでしょう。

例:

ソースe.bs

fun(){
    echo "$0"
    echo "${BASH_SOURCE[0]}"
}

ソース.bs

#!/usr/bin/env bash
echo "$0"
echo "${BASH_SOURCE[0]}"
source sourcee.bs
fun

テストの実行

$ ./sourcer.bs
./sourcer.bs
./sourcer.bs
./sourcer.bs
sourcee.bs    #Or the full path if it's in PATH instead of the PWD

おすすめ記事