exit
터미널에서 나가지 않도록 내장 기능을 대체하는 함수를 작성하려고합니다 .
SHLVL
환경 변수 를 사용하려고 시도했지만 하위 쉘 내에서 변경되지 않는 것 같습니다.
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
내 기능은 다음과 같습니다.
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
exit
그래도 하위 쉘 내 에서 사용할 수는 없습니다 .
$ exit
Nice try!
$ (exit)
Nice try!
서브 쉘에 있는지 여부를 감지하는 좋은 방법은 무엇입니까?
BASH_SUBSHELL
답은 (논쟁의 여지가 있지만) 해당 질문에 적용되지 않습니다.