명령 줄에서 문자열`! 23`은`docker`로 바뀝니다.


17

매개 변수가있는 Maven 명령이 있습니다.

mvn test -Dcommon_password=!23foo

이 명령은 다음과 같이 실행됩니다

mvn test -Dcommon_password=dockerfoo

!23으로 대체되고 docker있습니다. 왜 이런 일이 발생하며 어떻게 피할 수 있습니까?

답변:


43

이것은 내역 확장입니다 . 내역!23 에서 23 번째 명령으로 대체되었습니다.

이를 피하려면 작은 따옴표를 사용하십시오.

mvn test '-Dcommon_password=!23foo'

5
또는 완전히 비활성화 set +H/set +o histexpand
ilkkachu

12
이것은 모든 종류의 쉘 메타 문자를 포함 할 수있는 암호입니다. M. Kitt의 답변 에서처럼 적절하게 인용하고 탈출하는 것이 발생할 수있는 가능성 중 하나 를 비활성화하는 것보다 낫습니다 . 물론 처음에는 프로세스 인수에 암호를 사용하지 않는 것이 더 좋습니다 . (-:
JdeBP

내 질문에 @JdeBP 나는 간단한 이유로 비밀번호를 일반 텍스트로 표시했습니다. 실제 프로젝트에서이 주장은 Jenkins 비밀 자격 증명에서 가치를 얻습니다. 그래서 가려지고 안전합니다.
Vitalii Plagov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.