埋め込みスクリプトが含まれているかどうかを知って実際のパスを取得できますか?
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
答え2
$0
ZShellにあります。
% echo 'set | grep -a harglebargle' > harglebargle
% source harglebargle
0=harglebargle
%
(誰かがこのトリックを試してみた場合でも、ARGV0=... source ...
これは本当のようです。)
したがって、フルパスの場合:
% echo 'echo $0:a' > fullpath
% source fullpath
/home/jmates/tmp/fullpath
%