String `! 23` diganti dengan` docker` di baris perintah


17

Saya punya perintah Maven dengan parameter:

mvn test -Dcommon_password=!23foo

Perintah ini dieksekusi sebagai

mvn test -Dcommon_password=dockerfoo

Yaitu !23sedang diganti dengan docker. Mengapa ini terjadi dan bagaimana saya bisa menghindarinya?

Jawaban:


43

Ini adalah ekspansi riwayat : !23diganti dengan perintah ke-23 dalam riwayat Anda.

Untuk menghindari ini, gunakan satu kutipan:

mvn test '-Dcommon_password=!23foo'

5
atau nonaktifkan sepenuhnya dengan set +H/set +o histexpand
ilkkachu

12
Ini adalah kata sandi yang berpotensi berisi semua jenis karakter meta shell. Mengutip dan melarikan diri dengan benar seperti dalam jawaban M. Kitt lebih baik daripada menonaktifkan hanya satu dari kemungkinan yang bisa terjadi. Tentu saja, tidak memiliki kata sandi dalam proses argumen di tempat pertama akan lebih baik . (-:
JdeBP

@ JdeBP dalam pertanyaan saya, saya menunjukkan kata sandi dalam teks biasa hanya untuk alasan kesederhanaan. Dalam proyek nyata argumen itu mengambil nilai dari kredensial rahasia Jenkins. Jadi itu bertopeng dan aman.
Vitalii Plagov
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.