![다음 프롬프트에서 zsh 파이프라인 상태가 사라집니다.](https://linux55.com/image/197031/%EB%8B%A4%EC%9D%8C%20%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8%EC%97%90%EC%84%9C%20zsh%20%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8%20%EC%83%81%ED%83%9C%EA%B0%80%20%EC%82%AC%EB%9D%BC%EC%A7%91%EB%8B%88%EB%8B%A4..png)
저는 zsh 5.8(arm-apple-darwin20.2.0)을 사용하고 있습니다. PIPESTATUS
다음 쉘 프롬프트에서 zsh의 파이프를 읽을 수 있는 bash의 방식과 달리 pipestatus
zsh의 파이프는 다음 프롬프트에서 사라지는 것처럼 보입니다.
❯ true | false | true ; echo $pipestatus
0 1 0
❯ true | false | true
❯ echo $pipestatus
0
이 동작은 답변에서 제안한 동작과 다릅니다.여기, zsh 문서에는 이와 관련된 내용이 언급되어 있지 않습니다.
답변1
~처럼무루pipestatus
뭔가가 파이프를 사용하고 있으므로 프롬프트 관련 자동화에서 재정의될 수 있다는 의견을 썼습니다 . 범인일 가능성이 가장 높은 사람은후크 기능예를 들어 precmd
1 preexec
.
Bash 저장 $?
및 PIPESTATUS
트랩 주변의 기타 여러 가지 항목 및 PROMPT_COMMAND
(save_parser_state
). $?
많은 경우 Zsh (원천, 저장할 위치 찾기 lastval
), 확장 힌트 포함(promptexpand
precmd
) 및 다음 과 같은 후크를 실행합니다 preexec
(callhookfunc
수신 전화doshfunc
)을 사용 noreturnval=1
하지만 결코 저장하지 않습니다 pipestatus
.
¹ 다음과 같은 경우 프롬프트의 코드로 변수를 설정할 수도 있습니다.prompt_subst
설정되어 있지만 하위 쉘에 파이프가 있으며 원래 쉘의 pipestatus
.