コマンドラインで文字列「!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の答えのように適切に引用してエスケープすることは、発生する可能性の1つだけを無効にするよりも優れています。もちろん、そもそもプロセス引数にパスワードを持たない良いでしょう。(-:
JdeBP

私の質問で@JdeBPは、単純化のためにプレーンテキストでパスワードを示しました。実際のプロジェクトでは、その議論はジェンキンスの秘密の信任状から価値を取ります。マスクされて安全です。
Vitalii Plagov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.