Untuk dapat menonaktifkan ekspansi riwayat pada baris perintah tertentu, Anda dapat menggunakan space
sebagai 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 $HISTCONTROL
berisi ignorespace
sebagai cara untuk memberitahu bash
agar 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 foo
berfungsi 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 $histchars
adalah #
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).