同じソースを持つスクリプトがシェルを2回終了するのはなぜですか?

同じソースを持つスクリプトがシェルを2回終了するのはなぜですか?

gitワークツリーを作成するためにbashスクリプトを作成しました。cr_wt

#!/bin/bash

unset CDET_ID
unset WT_DIR

source ~/.bashrc

usage()
{
    echo "Usage: $0 [ -c CDET_ID ] [ -d Directory Name ]"
    exit 2
}

while getopts 'c:d:h' flag
do
    case $flag in
        c) CDET_ID=$OPTARG ;;
        d) WT_DIR=$OPTARG ;;
        h) usage
    esac
done

if [[ -n $CDET_ID ]] && [[ -n $WT_DIR ]]
then
    cd $REPO
    git worktree add -b $CDET_ID.my_branch $WT_DIR origin/my_branch 
    cd $WT_DIR
    WS="$(git rev-parse --show-toplevel)"
else
    usage
fi

私は次のようにこのスクリプトを実行します。 . cr_wt -c <cdet_id> -d <dir_name>

$WS私はgitリポジトリのルートディレクトリに保存できるので、実際にソーシングしています。私のエイリアスの多くは、$WSリポジトリ内のナビゲーションに依存しています。なぜなら、$WSgit worktreeで作成された新しいディレクトリを設定したいからです。このスクリプトをソースとして提供しました。

私が直面した問題は - このスクリプトを実行/インポートした後 - . cr_wt -c <cdet_id> -d <dir_name>

gitワークツリーが作成されます。その後、次のようにスクリプトをもう一度受け取ると - . cr_wt -c <cdet_id> -d <dir_name>

その後、bash シェルが終了します。

関連情報