몇 가지 명령을 읽고 있어요explainshell.com흥미로운 명령을 찾았습니다.
:(){ :|:& };:
나는 현재 OSX
그것을 사용하고 있고 내가 찾을 수 있는 유일한 참조는 builtin
매뉴얼 페이지( man builtin
)에 있지만 외부 명령인지, cshell 또는 sh 명령인지만 명시하므로 도움이 되지 않습니다.
Command External csh(1) sh(1)
! No No Yes
% No Yes No
. No No Yes
: No Yes Yes
그렇다면 실행은 무엇을 :
하는가?
터미널에는 출력이 없습니다.
$ :
$
답변1
이 경우에는 :
명령이 아니라 정의한 함수의 이름입니다. 해당 명령 :(){ :|:& };:
은 "포크폭탄"이라고 불리는 것입니다. 이는 이라는 함수를 정의하고 , 해당 함수가 를 호출하고 , 출력을 로 파이핑하고 , 두 번째 인스턴스를 배경으로 배치하는 :
것으로 구성되어 있음을 쉘에 알리는 일련의 명령입니다. 마지막 시퀀스에서는 함수 정의를 종료한 다음 호출합니다. 호출할 때마다 셸이 생성하는 속도만큼 빠르게 두 개의 추가 복사본이 실행됩니다 . 이로 인해 모든 시스템 리소스가 소진되어 결국 프로세스 제한이 설정되지 않은 경우 시스템 속도가 느려지거나 충돌하게 됩니다.:
:
;:
:
:
답변2
만약 너라면아니요redefine :
의 기본 의미는 작업 없음입니다. 다음 명령을 사용하여 해당 문서를 볼 수 있습니다help :
% help :
:: :
No effect; the command does nothing. A zero exit code is returned.
전설에 따르면 오래 전, 인터넷 초창기에는 이것이 실행되지 않고 쉘 스크립트에 텍스트를 넣는 방법이었다고 합니다. 즉, 댓글입니다. 나는 이에 대해 서면 정보를 갖고 있지 않습니다.