0

ドットを使用してシェルスクリプトを実行する「echo$0」が-bashを出力する理由

以下のコードスニペットがあると仮定します

#!/usr/bin/env bash
echo $0

ドット(。)を使用して実行します

. ./script.sh

出力:

-bash

でも、

ドットなしで実行した場合

出力は、予想どおり、パス名とスクリプト名を組み合わせたものです。

4

3 に答える 3

2

スクリプトをソーシングするexecと、新しいインタープリターではなく既存のインタープリターで実行されます。つまり、$0通常どおりに初期化されません。

于 2012-07-20T03:24:50.097 に答える
0

を使用してスクリプトを実行すると.、基本的には、シェルコマンドラインでスクリプトの内容を直接入力した場合と同じです。したがってecho "$0"、入力しただけの場合とまったく同じように出力されます。

のような特別な変数$0は、新しいシェルを起動したときにのみ初期化されますが.、そうでない場合はあまり役に立ちません。

ただし、bashバージョン3以降を使用している場合は、現在実行されているファイルをいつでも確認できます。

echo "$BASH_SOURCE"

これは、ファイルがどのように呼び出されても機能します。

于 2012-07-20T03:34:05.540 に答える
0


.のエイリアスですsource:

このコマンドは、スクリプトの実行には使用しないでください。ソース ファイルをインポートするために作成されています。
ここでそれを見ることができます:高度なBashスクリプトガイド

于 2012-07-20T03:42:30.593 に答える