Untuk dapat menonaktifkan ekspansi riwayat pada baris perintah tertentu, Anda dapat menggunakan spacesebagai karakter ke-3 dari $histchars:
histchars='!^ '
Kemudian, jika Anda memasukkan perintah Anda dengan spasi terkemuka, ekspansi sejarah tidak akan dilakukan.
bash-4.3$ echo "#!/bin/bash"
bash: !/bin/bash: event not found
bash-4.3$ echo "#!/bin/bash"
#!/bin/bash
Namun perlu dicatat bahwa spasi utama juga digunakan ketika $HISTCONTROLberisi ignorespacesebagai cara untuk memberitahu bashagar tidak merekam baris perintah dalam sejarah.
Jika Anda menginginkan kedua fitur tersebut secara independen, Anda harus memilih karakter lain sebagai karakter ketiga $histchars. Anda ingin satu yang tidak mempengaruhi cara perintah Anda ditafsirkan. Beberapa pilihan:
- menggunakan backslash (
\): \echo fooberfungsi tetapi memiliki efek samping menonaktifkan alias atau kata kunci.
- TAB: untuk memasukkannya di posisi pertama, Anda harus menekan Ctrl+VTab.
jika Anda tidak keberatan mengetik dua tombol, Anda dapat memilih karakter yang biasanya tidak muncul di posisi pertama ( %, @, ?, memilih sendiri) dan membuat sebuah alias kosong untuk itu:
histchars='!^%'
alias %=
Lalu masukkan karakter itu, spasi dan perintah Anda:
bash-4.3$ % echo !!
!!
(Anda tidak akan dapat merekam perintah di mana substitusi riwayat telah dinonaktifkan. Juga catat bahwa karakter ke-3 default $histcharsadalah #agar ekspansi riwayat tidak dilakukan dalam komentar. Jika Anda mengubahnya, dan Anda memasukkan komentar di cepat, Anda harus menyadari fakta bahwa! Urutan dapat diperluas di sana).