ไม่มีใครรู้ว่าทำไมทุบตียังคงมีการเปิดใช้งานการทดแทนประวัติโดยค่าเริ่มต้น? ฉัน.bashrc
รวมset +H
มาหลายปีแล้ว แต่คนอื่นบางคนยังคงถูกกัดโดยคุณลักษณะนี้
เมื่อพิจารณาว่าทุกคนใช้เทอร์มินัลพร้อมคุณสมบัติคัดลอกวางและทุบตีคอมไพล์ด้วยการแทนที่readline
ไลบรารีและประวัติถูกเปิดใช้งานโดยค่าเริ่มต้นในเชลล์แบบโต้ตอบเท่านั้นมีเหตุผลใด ๆ ที่มีคุณสมบัตินี้หรือไม่ ไม่มีสคริปต์ใด ๆ ที่มีอยู่จะใช้งานไม่ได้แม้ว่าจะถูกปิดใช้งานโดยค่าเริ่มต้นสำหรับเชลล์ทั้งหมด
ลองใช้วิธีนี้หากคุณไม่ทราบว่าทำไมการทดแทนประวัติเสีย:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(เห็นได้ชัดว่าสถานที่มีปัญหาที่สำคัญถ้ามันถูกปิดใช้งานโดยค่าเริ่มต้นสำหรับการเขียนสคริปต์ทั้งหมดและมีคุณสมบัติที่มีอยู่เพื่อตรวจสอบผลลัพธ์ก่อนที่จะดำเนินการ: shopt -s histverify
.)
ดูสิ่งนี้ด้วย:
&
? ทำไมฉันต้องหลบหนีหรืออ้างชื่อไฟล์ที่มี?
? มี UIs สำหรับคนที่คิดว่านี่เป็นปัญหา
!$
วันละหลายครั้งและ!!
ค่อนข้างบ่อยเช่นกัน ฉันต้องยอมรับว่าฉันไม่ได้ใช้การทดแทนประวัติอื่น ๆ มากนัก แต่ฉันก็คงจะไม่มีความสุขถ้าพฤติกรรมเริ่มต้นของเชลล์ที่ฉันใช้มาเป็นเวลาหลายปีได้เปลี่ยนไปอย่างกะทันหัน
ls -l foo/bar/baz/weeble.cpp
ที่มีless !$
มากกว่าการเรียกคืนคำสั่งและแก้ไขมัน