ทำไม 'tmux' สร้างหน้าต่างใหม่เป็นเปลือกเข้าสู่ระบบโดยค่าเริ่มต้น?


26

เมื่อคุณเริ่มเซสชันใหม่ในtmuxหรือสร้างหน้าต่างใหม่ภายในเซสชันที่กำลังทำงานลักษณะการทำงานเริ่มต้นของมันคือการใช้เชลล์ (เช่น:) bashเป็นเชลล์ล็อกอิน

ผมเข้าใจว่าเปลือกเข้าสู่ระบบมีจุดมุ่งหมายที่จะดำเนินการตามปกติของการกำหนดค่าและวิธีการที่มีความน่าสนใจเพียงเมื่อคุณมีการบันทึกในระบบ แต่ในกรณีส่วนใหญ่ (ยกเว้นว่าคุณสามารถใช้tmux เป็นเชลล์การเข้าสู่ระบบได้) ไม่ใช่ความตั้งใจที่แท้จริงของผู้ใช้ที่จะทำสิ่งนี้เมื่อเขาต้องการเปิดหน้าต่างใหม่

เหตุผลในการทำให้พฤติกรรมนี้เป็นค่าเริ่มต้นtmuxคืออะไร


สิ่งเดียวที่เอกสารกล่าวเกี่ยวกับเรื่องนี้:

default-command  shell-command
        Set the command used for new windows (if not specified when the
        window is created) to shell-command, which may be any sh(1)
        command.  The default is an empty string, which instructs tmux
        to create a login shell using the value of the default-shell
        option.

คำตอบ:


24

เชลล์ที่ไม่ใช่การล็อกอินแบบอินเตอร์แอคทีฟมักจะไม่อยู่เหนือเชลล์การเข้าสู่ระบบระดับบนสุดของคุณดังนั้นพวกเขาสามารถคาดหวังว่าสิ่งอำนวยความสะดวกใด ๆ ที่เริ่มต้นจะสามารถใช้ได้ตลอดเวลา แต่กรณีนี้ไม่ใช่ tmux:

  • คุณล็อกอินเข้าสู่เชลล์ -> สคริปต์ล็อกอินของคุณทำงาน
  • คุณเรียกใช้ tmux ทำอะไรแยกออก
  • ออกจากเชลล์ระดับบนสุด -> สคริปต์การออกจากระบบของคุณทำงาน
  • เซสชัน tmux ยังคงทำงานอยู่ แต่สิ่งอำนวยความสะดวกใด ๆ ที่เริ่มโดยเชลล์ล็อกอินของคุณจะไม่สามารถใช้ได้ในขณะนี้
  • คุณเข้าสู่ระบบอีกครั้งและแนบจากเปลือกเข้าสู่ระบบอีกครั้ง
  • สิ่งอำนวยความสะดวกใด ๆ ที่เริ่มต้นโดยล็อกอินเชลล์ใหม่อาจไม่สามารถมองเห็นได้โดย tmux เพราะมันยังคงทำงานด้วยสภาพแวดล้อมแบบเก่า (แม้ว่าจะมีคำสั่งให้อัพเดตสภาพแวดล้อม)

บางคนอาจคิดว่าการใช้ tmux start shell shell นั้นไม่จำเป็นเพราะในการตั้งค่าส่วนใหญ่ไม่มีสคริปต์การออกจากระบบและสคริปต์การเข้าสู่ระบบเพียงแค่ตั้งค่าตัวแปรสภาพแวดล้อมบางอย่าง

นอกจากนี้หากคุณต่อท้ายสตริงกับตัวแปรสภาพแวดล้อมของคุณในสคริปต์การเข้าสู่ระบบของคุณ (เช่นนี้: PATH = $ PATH: / some / other / path) และพวกเขาจะทำงานมากกว่าหนึ่งครั้งในลำดับชั้นกระบวนการเดียวกันกับที่คุณทำซ้ำ น่ารำคาญที่สุด

แต่ถึงกระนั้นฉันก็มักจะคิดว่าเริ่มต้นทำให้รู้สึก

ดูเพิ่มเติมได้ที่: http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html


2
ขอบคุณสำหรับคำตอบและลิงค์! ฉันคิดว่าฉันสามารถอยู่กับexec shในตอนท้าย ... (ฉันไม่ได้คิดอย่างนั้น)
leogama

3
คุณมีตัวอย่างที่เป็นรูปธรรมของสิ่งต่าง ๆ ที่อาจแตกถ้า tmux ไม่ได้วางเปลือกเข้าสู่ระบบหรือไม่? ฉันกำลังคิดที่จะทำให้มันเป็นค่าเริ่มต้นของฉัน แต่ฉันไม่ต้องการที่จะพบปัญหาที่ยากต่อการวินิจฉัยในบรรทัด
Carl Patenaude Poulin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.