서브쉘의 프롬프트를 변경하는 방법

서브쉘의 프롬프트를 변경하는 방법

무엇보다도 서브셸을 생성하는 간단한 스크립트를 만들려고 합니다.

#!/bin/sh

# setup

"${@:-$SHELL}"

# teardown

문제는 다음과 같이 기본 프롬프트를 변경해야 한다는 것입니다.

$ #기본 쉘
$ ./myscript
(myscript) $ # 서브쉘
(myscript) $ 종료
$

나는 변경을 시도했지만 PROMPT이들 PS1중 아무것도 작동하지 않습니다. 어떻게 해야 하나요?

PS: 가능하다면 Bash와 ZSH에서 작동하는 솔루션이 필요합니다.

답변1

다음과 같은 다른 프롬프트를 사용하여 하위 쉘을 만들 수 있다고 생각합니다.

$ bash --rcfile <(echo "PS1='subshell prompt: '") -i

현재 환경:

$ bash --rcfile <(echo "PS1='subshell prompt$ '") -i

서브셸에서:

subshell prompt$ echo hi
hi
subshell prompt$ exit
exit

원래 쉘로 돌아가기:

$ 

답변2

작동하지 않는 이유는 아마도 쉘을 로드할 때(예: ) /bin/bash프롬프트에 대한 환경 변수가 포함된 구성 파일을 다시 로드하기 때문일 것입니다(예 $HOME/.bashrc: : ).뒤쪽에원하는 환경 변수를 전달하면 변수가 삭제됩니다.

사용자 정의 구성 파일(예: --rcfileBash IINM)을 로드하려면 셸의 옵션을 확인하고 이러한 옵션을 사용하고 \env필수 환경 변수를 전달해야 할 수도 있습니다. 문제는 이렇게 하면 하위 쉘이 쉘에 종속된다는 것입니다.

(경고 사항:아직 답변이 아닌 것 같습니다. 특히 아직 내 시스템에서 이 중 어떤 것도 시도하지 않았습니다. )

관련 정보