ฉันจะรันคำสั่งใน bash หลังจากการเปลี่ยนแปลงใด ๆ ใน $ PWD ได้อย่างไร
zsh มีฟังก์ชั่น hook ที่ดีรวมถึงchpwdการใช้งานฟังก์ชั่นหลังจากผู้ใช้เปลี่ยนไดเรกทอรี # zsh only function greet() { echo 'hi'; } chpwd_functions+=("greet") cd .. # hi pushd # hi popd # hi ฉันพยายามเลียนแบบสิ่งนั้นด้วยการทุบตี ข้อ จำกัด : มันต้องใช้งานได้ทั้งกระสุนแบบโต้ตอบและแบบไม่โต้ตอบซึ่งฉันคิดว่าหมายความว่ามันไม่สามารถพึ่งพาอะไรได้ $PROMPT_COMMAND ไม่สามารถกำหนดใหม่ได้cdเพราะฉันต้องการให้มันทำงานกับคำสั่งใด ๆ ที่เปลี่ยนไดเรกทอรี (เช่นpushdและpopd) มันจะต้องทำงานหลังจากคำสั่งของผู้ใช้ดังนั้นจึงtrap "my_function" DEBUGใช้งานไม่ได้เว้นแต่ฉันจะสามารถพูดได้ที่นั่น "ก่อนอื่นให้$BASH_COMMANDเราติดกับดักจากนั้นก็ทำเช่นนี้ ... " ฉันเห็นว่าฉันสามารถหลีกเลี่ยงการทำงานอัตโนมัติ$BASH_COMMAND หาก extdebugเปิดใช้งานและฟังก์ชั่นการดักจับคืนค่า 1 แต่ฉันไม่คิดว่าฉันต้องการบังคับextdebugและการกลับมา1ใช้คำสั่งที่ประสบความสำเร็จ ส่วนสุดท้าย - "เรียกใช้หลังจากคำสั่งของผู้ใช้" - เป็นสิ่งที่ฉันนิ่งงันในขณะนี้ …