무슨 뜻이에요! "?

무슨 뜻이에요! "?

이 명령은 echo !"오류 메시지를 반환합니다. 그러나 명령은 echo "Hello!"성공했습니다. 명령이 올바르게 사용되었습니까 echo "Hello!"?

답변1

Bash를 실행하고 있다고 가정하면 !트리거는역사적 확장. 켜져 있고 예를 들어 를 쓰면 !echo로 시작하는 마지막 명령으로 대체됩니다 echo. 이 기능은 원래 csh에서 제공되었으며 다른 쉘에서 이를 지원하는지는 모르겠습니다.

히스토리 확장은 가장 똑똑한 기능이 아닙니다. 예를 들어 !"항상 실패하는 것처럼 보이더라도 이를 트리거합니다(실행 "echo" foo한 다음 시도해도 !"여전히 실패합니다). 짜증나게도 in과 같은 내부 큰따옴표도 트리거됩니다 echo "!hello". Bash 3.2에서도 echo "hello!"트리거되었지만 새 버전에서는 이것이 변경된 것 같습니다.

내 제안은 그것을 끄고 Bash의 시작 파일에 set +o histexpand넣는 것 입니다.set +H

관련 정보