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
$