Awesome의 새 터미널이 SLVL > 1로 생성되는 이유는 무엇입니까?

Awesome의 새 터미널이 SLVL > 1로 생성되는 이유는 무엇입니까?

나는PS1SLVL이 1이 아니면 SLVL이 표시되므로 서브셸에 있는지 빠르게 확인할 수 있습니다. 이는 GNOME을 사용할 때 예상대로 작동하지만 Mod4Awesome WM (+)에서 새 터미널을 생성 하면 Return항상 SHLVL=2이상으로 시작됩니다. 이게 정상인가요?

Mod4이는 Awesome(++ 또는) 을 다시 시작하는 횟수와 직접적인 관련이 있습니다 . 재부팅 시 새 쉘이 생성되는 것을 방지할 수 있는 방법이 있습니까?Ctrlrpkill -HUP awesome

이것들 제출하다$SHELL -c ...Awesome이 에서 이와 같은 것을 실행하게 되었기 때문에 관련이 있는 것 같지만 HUP이를 고칠 수 있을 만큼 C를 알지 못합니다.

내 로그인 쉘은 /bin/sh입니다 .dashbash

문제를 보고했습니다..

답변1

이유를 이해한다고 생각하지만 완전한 해결책은 없습니다.

동작은 SHLVL쉘에 따라 다릅니다. 대시 및 ksh(pdksh 및 ksh93)에서는 대화형 인스턴스만 증가됩니다 SHLVL. Bash 및 zsh에서는 모든 인스턴스가 incremented SHLVL, 심지어 incremented 됩니다 bash -c ….

이후 행동의 변화를 관찰한다면이번 패치/bin/sh, 귀하의 것은 dash이고 귀하의 $SHELL것은 bash 일 가능성이 매우 높습니다 . 전에는 awesome이 실행 중이었지만 /bin/sh -c …아무것도 바뀌지 않았습니다 SHLVL. 패치 후에는 이제 실행 중입니다 $SHELL -c …. bash -c …SHLVL, .

SHLVLAwesome의 내부를 변경하면 속임수를 쓸 수 있습니다 . 시작 코드를 후크하여 SHLVL1씩 줄입니다. Lua 코드는 모르지만 C 코드를 다시 컴파일하지 않고도 이것이 가능하다고 확신합니다.

관련 정보