명령 줄에서 문자열`! 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.