예 $(예 예) 무엇을 하나요?

예 $(예 예) 무엇을 하나요?

yes이 명령이 어떤 용도로 유용할지 궁금해서 우연히 발견했습니다.이 댓글, 그리고 실행을 시도합니다

yes $(yes yes)

내가 이해한 바에 따르면 이것은 단순히 무한 시퀀스를 인쇄해야 yes하지만 아무것도 출력하지 않고 몇 초 후에 그래픽 터미널이 충돌합니다. (tty1에서 실행하면 잠시 후 로그인 프롬프트가 나옵니다.)

여기서 무슨 일이 일어나고 있는 걸까요?

답변1

충분히 달릴 수 있을 거야

 echo $(yes yes)

$(...)완료될 때까지 내부 명령을 실행 하고 모든 출력을 캡처합니다. - 이제 yes오랜 시간 동안 실행되고 많은 출력을 생성하기 때문에 bash는 결국 메모리가 부족해지고 충돌이 발생합니다.

답변2

셸을 닫을 때 발생하는 오류 메시지를 보려면 하위 셸을 실행해야 합니다.

$ sh
$ kill -9 $$
Killed
$

$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$

관련 정보