Строка `! 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
Это пароль, который потенциально может содержать все виды метасимволов оболочки. Правильно цитировать и избегать, как в ответе М. Китта, лучше, чем отключить только одну из возможных возможностей. Конечно, лучше не иметь пароль в аргументах процесса . (-:
JdeBP

@JdeBP в своем вопросе я показал пароль в виде простого текста просто из соображений простоты. В реальном проекте этот аргумент берет значение из секретных учетных данных Дженкинса. Так что это замаскировано и безопасно.
Виталий Плагов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.