nnn 하위 쉘(사용자 정의 쉘 프롬프트)에서 환경 변수 유지

nnn 하위 쉘(사용자 정의 쉘 프롬프트)에서 환경 변수 유지

두 개의 서로 다른 터미널 에뮬레이터를 실행 중이고 zsh둘 중 하나에 있는지 여부에 따라 다른 프롬프트가 표시됩니다(두 번째는 "기본값"입니다).

TERM_EMU=$(ps --pid $(ps --pid $$ -o ppid=) -o comm=)
if [ $TERM_EMU = 'term1' ]; then
    PS1='term1> '
else
    PS1='term2> '
fi

(터미널 에뮬레이터 이름 조회 명령은 어디서 얻었나요?이 문제)

그러나 파일 탐색에도 사용 nnn하고 하위 쉘을 자주 생성합니다. 하위 쉘에 들어갈 때마다 nnn이 명령을 사용하여 찾은 터미널 에뮬레이터의 프로세스 ID가 ps변경되고 nnn쉘이 "기본" 프롬프트로 전환됩니다. 하위 쉘 프롬프트를 기본 프롬프트 설정과 동기화하고 싶습니다.

내 첫 번째 생각은 먼저 하위 쉘 깊이가 0인지 확인하는 것이었습니다. 이렇게 하면 나중에 하위 쉘에서 참조할 변수로 쉘 프롬프트가 설정될 것입니다.

if [ -z $NNNLVL ]; then
    TERM_EMU=$(ps --pid $(ps --pid $$ -o ppid=) -o comm=)
    if [ $TERM_EMU = 'term1' ]; then
        PS1='term1> '
    else
        PS1='term2> '
    fi
else
    PS1="($NNNLVL) $PS1"
fi

이는 작동하지 않습니다. 대신 서브쉘 프롬프트가 표시됩니다.

(<level>) <hostname>% 

이것은 내가 원하는 것이 전혀 아닙니다. 분명히 PS1변수는 서브쉘로 전송되지 않습니다. nnn쉘이 상위 터미널 에뮬레이터를 "기억"하도록 강제하는 방법은 무엇입니까 ?

관련 정보