スクリプト内でソースtcshまたはbashシェルスクリプトのパスを決定する方法

スクリプト内でソースtcshまたはbashシェルスクリプトのパスを決定する方法

どのような方法がありますか?源泉シェルスクリプトは独自のパスを見つけますか?私の主な関心事は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"

おすすめ記事