どのような方法がありますか?源泉シェルスクリプトは独自のパスを見つけますか?私の主な関心事はbash
私の同僚の一部ですtcsh
。
ソーシングによって現在のシェルでコマンドが実行されるため、ここでは幸運ではない可能性があります。したがって、$0
まだソーススクリプトではなく、現在のシェルを呼び出します。最良のアイデアは、source $script $script
最初の位置パラメータに必要な情報を含めることです。誰でも良い方法がありますか?
明らかに言えば、私は購入スクリプトを実行する代わりに:
source foo.bash
ベストアンサー1
では、ファイルtcsh
がソースまたはファイルが実行されている場合、$_
スクリプトの先頭にその場所が含まれます。$0
#!/bin/tcsh
set sourced=($_)
if ("$sourced" != "") then
echo "sourced $sourced[2]"
endif
if ("$0" != "tcsh") then
echo "run $0"
endif
大きな打撃を受けた場合:
#!/bin/bash
[[ $0 != $BASH_SOURCE ]] && echo "Script is being sourced" || echo "Script is being run"