質問: ソースシェルスクリプトへのパスを決定する sourcedシェルスクリプトが自身へのパスを見つける方法はありますか?私は主にbashに関心がありますが、tcshを使用する同僚が何人かいます。ソーシングによって現在のシェルでコマンドが実行されるため、ここではそれほどの運がないと思います。したがって、$0は、現在のシェルの呼び出しであり、ソーススクリプトではありません。現在、私の最善の考えは、source $script $script、最初の定位置パラメーターに必要な情報が含まれるようにします。誰かがより良い方法を持っていますか?明確にするために、私はsourcingスクリプトであり、実行していません。source foo.bash
回答: ifステートメントを使用する代わりに、スクリプトをbash互換とzsh互換の両方にするには、単に${bash_source[0]:-${(%):-%x}}と記述します。結果の値は、定義されている場合は_bash_source[0]_から取得され、bash_source [0]が定義されていない場合は${(%):-%x}}から取得されます。