มีคำตอบที่นี่: /unix/12032/create-new-window-with-current-directory-in-tmux
สรุป:
จาก tmux FAQ วิธีหนึ่ง (แต่ค่อนข้างธรรมดาและค่อนข้างอิสระเชลล์) ของป้าน:
- ฉันจะเปิดหน้าต่างใหม่ในไดเรกทอรีเดียวกันกับหน้าต่างปัจจุบันได้อย่างไร
ทางเลือกหนึ่งคือเรียกใช้ "TMUX = tmux" ในหน้าต่าง อย่างไรก็ตามจะใช้งานได้หากไม่มีคำสั่งที่ทำงานอยู่ดังนั้นคุณจึงสามารถป้อนคำสั่งได้
วิธีแก้ปัญหาคือให้ tmux ทราบเกี่ยวกับเส้นทางปัจจุบันผ่านตัวแปรสภาพแวดล้อม หากต้องการทำเช่นนั้นให้ใช้คำสั่งต่อไปนี้:
[ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD
ซึ่งตั้งค่า TMUXPWD_i (โดยที่ i คือหมายเลขของหน้าต่างปัจจุบัน) ไปยังพา ธ ของไดเร็กทอรีปัจจุบัน คำสั่งนี้สามารถเพิ่มลงใน PS1 ได้เช่น:
PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\h$ '
เมื่อหน้าต่างใหม่ถูกสร้างขึ้นเชลล์ควรถูกขอให้เปลี่ยนไดเรกทอรี คุณสามารถกำหนดการผูกใหม่ (ตัวอย่างเช่นถ้าใช้ GNU bash):
bind-key C-c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"'
วิธีการแก้ปัญหานี้จะทำงานแม้ว่าคำสั่งจะทำงานใน terminal แต่มันจะไม่ทำงานจากหน้าต่างที่เพิ่งถูกสลับกับอีกเพราะ TMUXPWD_i จะไม่ได้รับการปรับปรุงหลังจากการแลกเปลี่ยน อย่างไรก็ตามเมื่อพร้อมต์ใหม่ปรากฏขึ้น TMUXPWD_i จะถูกอัพเดตอย่างถูกต้อง
เพียงแทนที่การโทรไปยังเชลล์ตามความเหมาะสมสำหรับคุณ
ยังเห็นได้ชัดว่าเวอร์ชันใหม่กว่าของ tmux ได้ระบุสิ่งนี้ด้วยคำสั่ง
tmux หน้าต่างใหม่
รุ่นเก่าถูกอ้างสิทธิ์ว่าใช้งานได้:
โทร
tmux neww
จากเชลล์ของคุณจะเปิด tmux ใน dir นั้น
หากคุณต้องการที่จะเปิดหน้าต่างใหม่หรือบานหน้าต่างจากไดเรกทอรีการทำงานปัจจุบันใน tmux คุณควรแทน:
tmux set-option default-path "$ PWD"