zsh 5.3(oh-my-zsh를 통해)이 있고 를 실행하면 echo --message="foo!"
다음 줄에 종료되지 않은 참조 프롬프트가 표시됩니다.
$ echo --message="foo!"
dquote>
이것은 bash에서는 발생하지 않습니다.
!
매개변수에서 역할을 제거 하면 정상적으로 작동합니다.
$ echo --message="foo"
--message=foo
여기서 무슨 일이 일어나고 있는 걸까요?
또한 종료되지 않은 견적 프롬프트에 응답하고 "
Enter 키를 누르면 다음 출력이 표시되어 완전히 제거됩니다 !
.
$ echo --message="foo!"
dquote> "
--message=foo
답변1
이것이 바로 역사적 확장입니다.
zshexpn(1)
맨페이지에서는 이를 다음과 같이 설명합니다.
쉘이
!"
입력에서 일련의 문자를 발견하면zshmisc(1)
현재 목록이 완전히 구문 분석될 때까지 기록 메커니즘이 일시적으로 비활성화됩니다(참고자료 참조).!"
입력에서 제거되며 이후의 문자!
는 특별한 의미가 없습니다.