상위 bash에서 호출된 하위 쉘 sh의 PS1 프롬프트 변경

상위 bash에서 호출된 하위 쉘 sh의 PS1 프롬프트 변경

대화형 세션을 실행할 때 bash가끔 sh.

sh이번 회의에서 직접 전화를 걸었습니다 bash.

PS1제 질문은 이 서브셸의 프롬프트를 어떻게 변경할 수 있습니까?입니다 .

대신 sh$사용하고 있음을 알려주는 프롬프트가 이와 같았으면 좋겠습니다 .shbash

지금까지 내가 시도한 것은 다음과 같습니다.

  • .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더 나은 접근 방식일 수 있습니다.

관련 정보