タイトルはすべてそれを言うべきです。私はzshの${BASH_SOURCE[0]}
に相当するものを探しています。
注:私が見つけ続けるインターネットを中心に「$0
${BASH_SOURCE[0]}
と同等である」が、これは偽のようです:$0
は、実行コマンドの名前のようです。私のスクリプト(.zshrc
)で$ 0をエコーすると$0
の場合はzsh
となりますが、これは${BASH_SOURCE[0]}
と同じではありません。実際には、${BASH_SOURCE[0]}
は.zshrc
ファイルを除いてzsh
で動作するようです。
.zshrc
でやっている何を
:
echo ${BASH_SOURCE[0]}
source `dirname $0`/common-shell-rc.sh
ソースに障害が発生した($0
はzsh
ある)とecho
は空白行を出力します。
編集:
どうやら、仕事をする
$0
のために、私はオプション
FUNCTION_ARGZERO
オプションセットが必要です。これがスクリプトに設定されているかどうかをテストする方法はありますか? (一時的に設定できるように)
nofunction_argzero
を設定しない限り、それは明らかにオンであり、それは私のシェルにあります。まだ$0
のために何も得られない。 (私はb/cだと私は機能していないと思う)
私はまだこれが正しいかはわかりません。これらの2つのファイルを作成します。 'foo'は' source/foo2'を含み、 'foo2'は' echo $ 0'を含みます。 '。/ foo'を実行すると、ソーススクリプトの名前ではなく'/foo'の出力が得られます。 '$ 0'を' $ {BASH_SOURCE [0]} 'に置き換えて、bashで再実行すると'。/ foo2'が得られます。 – Thanatos
@ Thanatos '。/ foo2'(zsh 4.3.10;これはある時点で変更されている可能性がありますが、4.0以降では変更されている可能性があります)が表示されます。あなたの指示と比較して、私は '#!/ bin/zsh'を' foo'の先頭に追加して、zshの下でスクリプトを実行しました。あなたはzshの下で 'foo'を実行していますか? – Gilles
明快に強調するには... ** 'zsh' **(そしておそらく他のシェル)では、' $ 0'の値は呼び出し元のスクリプトではなくソーススクリプトです。これはBashでどのように動作するかではありません。したがって、zshの '$ 0'はBashの$ {BASH_SOURCE [0]}と同じです。 – toxalot