Belirli bir komut satırında geçmiş genişletmeyi devre dışı bırakabilmek spaceiçin, 3. karakter olarak kullanabilirsiniz $histchars:
histchars='!^ '
Ardından, komutunuza bir satır boşluğu girerseniz, tarih genişletme işlemi gerçekleştirilmez.
bash-4.3$ echo "#!/bin/bash"
bash: !/bin/bash: event not found
bash-4.3$ echo "#!/bin/bash"
#!/bin/bash
Zaman önündeki boşlukların da kullanılabilir olduğu unutulmamalıdır $HISTCONTROLiçeren ignorespaceanlatmak için bir yol olarak bashtarihte bir komut satırı kaydetmek için değil.
Her iki özelliğin de dahili olarak olmasını istiyorsanız, 3. karakteri olarak başka bir karakter seçmeniz gerekir $histchars. Komutunun yorumlanma şeklini etkilemeyecek birini istiyorsun. Birkaç seçenek:
- ters eğik çizgi (
\) kullanma : \echo fooçalışır ancak takma adı veya anahtar sözcükleri devre dışı bırakmanın yan etkisi vardır.
- SEKME: İlk sıraya yerleştirmek için Ctrl+VTabolsa da basmanız gerekir .
Eğer iki anahtar yazarak sakıncası yoksa, normalde ilk konumda görünür (olmayan herhangi bir karakter seçebilirsiniz %, @, ?, kendiniz oluşturun) ve bunun için boş bir takma ad olun:
histchars='!^%'
alias %=
Ardından bu karakteri, boşluğu ve komutunuzu girin:
bash-4.3$ % echo !!
!!
(Eğer tarih ikamesi olsa devre dışı bırakılmış bir komutu kaydetmek için değil mümkün olmayacaktır. Ayrıca varsayılan 3 karakter unutmayın $histcharsolduğunu #bunu değiştirirseniz. böylece tarih genişleme yorumlarda yapılmaz ve en yorumları girin istemi, orada! dizilerinin orada genişletilebileceği gerçeğinin farkında olmalısınız).