bash 매뉴얼에 따르면
BASH_SUBSHELL 쉘이 해당 환경에서 실행을 시작할 때 각 서브쉘 또는 서브쉘 환경에 하나씩 추가하십시오. 초기값은 0입니다.
SHLVL새로운 Bash 인스턴스가 시작될 때마다 1씩 증가합니다. 이는 Bash 쉘의 중첩 깊이를 계산하는 데 사용됩니다.
이 두 내장 변수의 차이점은 무엇입니까?
구체적으로 "서브쉘 또는 서브쉘 환경"과 "Bash 쉘"의 차이점은 무엇입니까?
아래 예에서 의 값은 BASH_SUBSHELL
변하지 않지만 의 값은 SHLVL
변하는 이유는 무엇입니까?
$ echo $BASH_SUBSHELL
0
$ echo $SHLVL
1
$ bash
$ echo $BASH_SUBSHELL
0
$ echo $SHLVL
2
답변1
이는 메인 쉘 내의 하위 쉘을 나타냅니다.
비교하다
echo "a" $BASH_SUBSHELL "b" $SHLVL
그리고
( echo "a" $BASH_SUBSHELL "b" $SHLVL )
또는
( ( echo "a" $BASH_SUBSHELL "b" $SHLVL ) )
환경 변수를 설정하는 경우 함수 내에서 유용할 수 있습니다.