동일한 소스를 가진 스크립트가 쉘을 두 번 종료하는 이유는 무엇입니까?

동일한 소스를 가진 스크립트가 쉘을 두 번 종료하는 이유는 무엇입니까?

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 쉘이 종료됩니다.

관련 정보