ที่นี่ฉันจะชี้ปัญหาหนึ่งกับ
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
และ
PROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
หากคุณเรียกใช้ซอร์ส ~ / .bashrc $ PROMPT_COMMAND จะเป็นเช่นนั้น
"history -a; history -c; history -r history -a; history -c; history -r"
และ
"history -a; history -n history -a; history -n"
การทำซ้ำนี้เกิดขึ้นทุกครั้งที่คุณเรียกใช้ 'source ~ / .bashrc' คุณสามารถตรวจสอบ PROMPT_COMMAND หลังจากแต่ละครั้งที่คุณเรียกใช้ 'source ~ / .bashrc' โดยเรียกใช้ 'echo $ PROMPT_COMMAND'
คุณสามารถเห็นคำสั่งบางคำสั่งเสียหาย: "history -n history -a" แต่ข่าวดีก็คือมันยังใช้งานได้เพราะชิ้นส่วนอื่นยังคงเรียงลำดับคำสั่งที่ถูกต้อง (เพียงแค่มีค่าใช้จ่ายเพิ่มเติมเนื่องจากการดำเนินการคำสั่งซ้ำ ๆ และไม่สะอาด)
ส่วนตัวฉันใช้รุ่นง่าย ๆ ต่อไปนี้:
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r"
ซึ่งมีฟังก์ชันการทำงานส่วนใหญ่ในขณะที่ไม่มีปัญหาดังกล่าวข้างต้น
อีกจุดที่ต้องทำคือไม่มีความมหัศจรรย์อะไรเลย PROMPT_COMMAND เป็นเพียงตัวแปรสภาพแวดล้อมทุบตีธรรมดา คำสั่งในนั้นจะถูกดำเนินการก่อนที่คุณจะได้รับพรอมต์ทุบตี (เครื่องหมาย $) ตัวอย่างเช่น PROMPT_COMMAND ของคุณคือ "echo 123" และคุณเรียกใช้ "ls" ในเทอร์มินัลของคุณ เอฟเฟกต์นั้นเหมือนกับการทำงาน "ls; echo 123"
$ PROMPT_COMMAND="echo 123"
เอาต์พุต (เช่นเดียวกับการเรียกใช้ 'PROMPT_COMMAND = "echo 123"; $ PROMPT_COMMAND'):
123
รันสิ่งต่อไปนี้:
$ echo 3
เอาท์พุท:
3
123
"history -a" ใช้เพื่อเขียนคำสั่ง history ในหน่วยความจำไปที่ ~ / .bash_history
"history -c" ใช้เพื่อล้างคำสั่งประวัติในหน่วยความจำ
"history -r" ใช้เพื่ออ่านคำสั่งประวัติจาก ~ / .bash_history ไปยังหน่วยความจำ
ดูคำอธิบายคำสั่งประวัติที่นี่: http://ss64.com/bash/history.html
PS: ตามที่ผู้ใช้คนอื่นได้ชี้ให้เห็นการส่งออกไม่จำเป็น ดู: การใช้การส่งออกใน. bashrc