หากต้องการปิดใช้งานการขยายประวัติในบรรทัดคำสั่งเฉพาะคุณสามารถใช้space
เป็นอักขระที่ 3 ของ$histchars
:
histchars='!^ '
จากนั้นหากคุณป้อนคำสั่งด้วยช่องว่างนำหน้าการขยายประวัติจะไม่ถูกดำเนินการ
bash-4.3$ echo "#!/bin/bash"
bash: !/bin/bash: event not found
bash-4.3$ echo "#!/bin/bash"
#!/bin/bash
โปรดทราบว่าช่องว่างนำยังใช้เมื่อ$HISTCONTROL
มีignorespace
เป็นวิธีที่จะบอกbash
ไม่ให้บันทึกบรรทัดคำสั่งในประวัติ
หากคุณต้องการคุณลักษณะทั้งสอง indenpendantly $histchars
คุณจะต้องเลือกตัวละครอื่นเป็นตัวละครที่ คุณต้องการสิ่งที่ไม่ส่งผลกระทบต่อวิธีการตีความคำสั่งของคุณ ตัวเลือกไม่กี่:
- using backslash (
\
): ใช้\echo foo
งานได้ แต่มีผลข้างเคียงของการปิดใช้งานนามแฝงหรือคำหลัก
- แท็บแทรกในตำแหน่งแรกที่คุณต้องกดCtrl+VTabแม้ว่า
ถ้าคุณไม่ทราบพิมพ์สองปุ่มคุณสามารถเลือกตัวอักษรใด ๆ ที่ปกติจะไม่ปรากฏในตำแหน่งแรก ( %
, @
, ?
เลือกของคุณเอง) และทำให้นามแฝงว่างสำหรับมัน
histchars='!^%'
alias %=
จากนั้นป้อนอักขระช่องว่างและคำสั่งของคุณ:
bash-4.3$ % echo !!
!!
(คุณจะไม่สามารถบันทึกคำสั่งที่ปิดใช้งานการแทนที่ประวัติได้นอกจากนี้โปรดทราบว่าอักขระตัวที่ 3 ที่เป็นค่าเริ่มต้น$histchars
คือ#
เพื่อไม่ให้มีการขยายประวัติในความคิดเห็นหากคุณเปลี่ยนและคุณป้อนความคิดเห็นที่ คุณควรตระหนักถึงความจริงที่ว่า! ลำดับอาจขยายได้)