무엇보다도 서브셸을 생성하는 간단한 스크립트를 만들려고 합니다.
#!/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
: : ).뒤쪽에원하는 환경 변수를 전달하면 변수가 삭제됩니다.
사용자 정의 구성 파일(예: --rcfile
Bash IINM)을 로드하려면 셸의 옵션을 확인하고 이러한 옵션을 사용하고 \env
필수 환경 변수를 전달해야 할 수도 있습니다. 문제는 이렇게 하면 하위 쉘이 쉘에 종속된다는 것입니다.
(경고 사항:아직 답변이 아닌 것 같습니다. 특히 아직 내 시스템에서 이 중 어떤 것도 시도하지 않았습니다. )