배쉬 : 얼마나 많은 중첩 세션이 있습니까?


9

나는 시작하는 말 bash쉘,
... 그리고 또 다른 bash그 쉘 내에서 세션,
... 그리고 또 다른 bash세션 내에서 세션,
... 그리고 또 다른 bash세션 내에서 세션
(회 N) 등

모든 N 세션을 종료하려면 exitN 번 입력해야합니다 .

주어진 bash 세션 내에서 얼마나 깊이 중첩되어 있는지 어떻게 알 수 있습니까?

이상적으로 $STY는 스크린 세션 과 비슷한 환경 변수를 찾고 있습니다.

답변:


16

사용하십시오 SHLVL. 보낸 사람 man bash:

SHLVL  Incremented by one each time an instance of bash is started.

예 :

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3

이것은 좋지만 설정에 약간의 문제가 있음을 알았습니다.-내 .xinitrc는 하나의 쉘을 일반 프로세스로 시작하지만 다른 쉘을 사용하여 다른 exec터미널을 사용합니다 (이 터미널이 닫히면 전체 XSession이 종료됩니다). $SHLVL이 터미널에 대해 두 개의 다른 숫자를 생성합니다. 더 쉘에 특정한 환경 변수가 있습니까?
tetris11

$BASH_SUBSHELL유망 해 보였지만 제공하지는 않습니다.
tetris11

1
@ tetris11Yeah .. 그게 어떻게 작동하는지 SHLVL. 솔루션 맞는지 확인하십시오.
heemayl

1
아, 물론 - 나는 수동으로 설정할 수 있습니다 SHLVL=0~/.xinitrc. 화려한, 감사합니다
tetris11
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.