왜 `echo bash`가 즉시 종료됩니까?

왜 `echo bash`가 즉시 종료됩니까?

다음 작업은 모두 효과가 없습니다.

echo bash | bash
echo dash | dash
echo "bash -c bash" | bash
echo "dash -c dash" | dash

왜? 예를 들어 첫 번째 줄에서는 bash 인스턴스를 생성한 다음그것입력을 기다리는 또 다른 bash 인스턴스가 생성됩니다. 그러나 입력을 기다리지 않고 종료됩니다. 상위 bash도 종료됩니다. 따라서 두 bash 인스턴스가 모두 종료되고 이 명령을 시작한 쉘 인스턴스로 돌아갑니다. 제가 어디서 잘못 이해한 걸까요?

답변1

두 번째 bash 인스턴스하다bashstdin( 문자열을 읽는 파이프와 동일) 에서 입력을 기다리지만 echo프로세스가 종료되고 파이프의 쓰기 끝이 닫힐 때만 EOF를 수신합니다.

두 번째 bash에 몇 가지 입력을 제공할 수도 있습니다.

(echo bash; echo echo hjello) | bash
hjello

관련 정보