ฉันต้องการปรับแต่งการทำงานของcdคำสั่งตามความต้องการของฉัน
ฉันกำหนดหน้าที่ดังต่อไปนี้ -
function cd () { cd "$@" && pushd "$@"; }
ความตั้งใจของฟังก์ชั่นนี้คือการผลักดันไดเรกทอรีไปยังสแต็กโดยอัตโนมัติเพื่อให้ฉันไม่ต้องพยายามพิมพ์ด้วยตนเองpushd .ทุกครั้ง
แต่ฟังก์ชั่นดังกล่าวข้างต้นเป็นฟังก์ชันเวียนเพียบเช่นการเรียกร้องให้cdมีการตีความว่าจะเป็นฟังก์ชั่นของตัวเองและไม่ได้cdในตัว
ฉันจะอ้างอิงในcdตัวในฟังก์ชั่นนี้ได้อย่างไร
\ฉันรู้ว่านามแฝงสามารถหนีออกมาใช้ เป็นวิธีการหลบหนีฟังก์ชั่นหรือการอ้างอิงในตัวในทางที่ชัดเจนมากขึ้นคืออะไร?
หมายเหตุ: ฉันไม่ต้องการเปลี่ยนชื่อฟังก์ชั่นของฉันเป็นอย่างอื่น
pushd -Pแต่คุณถูกต้องดังที่แสดงในคำถามว่ามันfunction cdดูผิดเล็กน้อยเพราะมันเปลี่ยนไดเรกทอรีสองครั้ง
alias cd=pushd? คุณคาดหวังว่าจะเกิดอะไรขึ้นเมื่อคุณทำซีดีกับสิ่งที่ไม่ใช่เส้นทางที่แน่นอน (เช่นcd ../)