Рядок `! 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.