PS1에서 0이 아닌 반환 상태 표시

PS1에서 0이 아닌 반환 상태 표시

프롬프트에 반품 상태를 포함하고 싶습니다. (추가하기 쉽죠 '$? '?)

그러나 나는 0이 아닌 상태(및 후행 공백)만 반환되기를 원합니다.

예:

sd ~ $ false
1 sd ~ $ true
sd ~ $ 

답변1

이 옵션이 켜져 있는지 확인하세요 promptvars(기본값). 그런 다음 원하는 코드를 입력하여 PROMPT_COMMAND프롬프트에 원하는 내용이 포함된 변수를 정의하세요.

PROMPT_COMMAND='prompt_status="$? "; if [[ $prompt_status == "0 " ]]; then prompt_status=; fi'
PS1='$prompt_status\h \w \$ '

zsh에서는 조건부 구성을 사용할 수 있습니다 PS1(bash에는 해당 없음).

PS1='%(?,,%? )%m %~ %# '

답변2

사용할 필요가 없습니다 PROMPT_COMMAND. 여기에서는 불필요한 문제가 발생합니다. 당신이 해야 할 일은 이 함수를 정의하는 것 뿐입니다:

prompt_status()
{
    [ $? = 0 ] && return
    echo -n "${?} "
}

그런 다음 PS1을 다음과 같이 설정하십시오.

shopt -s promptvars
PS1='$(prompt_status)'$PS1

prompt_status()내부 서브쉘 평가는 $?수정으로부터 보호됩니다.

답변3

내가 가질 수 있는 가장 좋은 것은 그것을 통해서이다

PS1='${?/#0/}'":$PS1"

구분 기호로 a를 추가했기 :때문에 질문의 내용이 정확하지 않습니다.

관련 정보