![상위 bash에서 호출된 하위 쉘 sh의 PS1 프롬프트 변경](https://linux55.com/image/40710/%EC%83%81%EC%9C%84%20bash%EC%97%90%EC%84%9C%20%ED%98%B8%EC%B6%9C%EB%90%9C%20%ED%95%98%EC%9C%84%20%EC%89%98%20sh%EC%9D%98%20PS1%20%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8%20%EB%B3%80%EA%B2%BD.png)
대화형 세션을 실행할 때 bash
가끔 sh
.
sh
이번 회의에서 직접 전화를 걸었습니다 bash
.
PS1
제 질문은 이 서브셸의 프롬프트를 어떻게 변경할 수 있습니까?입니다 .
대신 sh$
사용하고 있음을 알려주는 프롬프트가 이와 같았으면 좋겠습니다 .sh
bash
지금까지 내가 시도한 것은 다음과 같습니다.
.bashrc
나는 다음과 같은 이름의 구성 파일을 만들었습니다..shrc
- 저는 그냥 한 줄만 넣었습니다.
export PS1='$(echo ${0})\$ '
~/.profile
그런 다음 다음과 같이 수정했습니다 .# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi # if running another shell else if [ -f "$HOME/.shrc" ]; then . "$HOME/.shrc" fi fi
터미널을 다시 시작했지만 변경 사항이 적용되지 않았습니다.
- 수동으로 실행하면 변경됩니다
. ~/.shrc
.sh
하다신청하세요.
내가 뭘 잘못했나요?
답변1
기본적으로 파일을 가져오지 않습니다. 다음과 같이 지시할 수 있습니다.
ENV=~/.shrc sh
또는 다음을 추가할 수 있습니다.
alias sh="PS1='\$0\$ ' sh"
일반적으로 사용되는 쉘의 환경 파일에. 그것은 일을 단순화합니다.
심지어:
alias sh='ENV=~/.shrc sh'
그러나 이에 대한 변수를 선언하려는 경우 $PS1
첫 번째 예와 같이 명령줄에서 명시적으로 설정하는 것이 alias
더 나은 접근 방식일 수 있습니다.