แนบกับการเรียกใช้เปลือกระยะไกลด้วย eshell / TRAMP / dtach


11

ฉันมักจะใช้หน้าจอ GNU เพื่อให้เซสชันระยะไกลยังมีชีวิตอยู่ เนื่องจากฉันอาศัยอยู่ใน Emacs ฉันต้องการที่จะสามารถเริ่มต้นเซสชันเชลล์ระยะไกลที่ทำงานอยู่ใหม่จากภายใน Emacs ได้

หน้าจอ GNU ใช้สิ่งแฟนซีทุกประเภทเช่นมัลติเทอร์มินัลและการวาดตัวละครที่ฉันไม่ต้องการ ฉันสนใจแค่การมีเชลล์แบบถอดได้และกลับมาทำงานต่อได้ดังนั้นสิ่งที่เรียบง่ายที่สุดdtachอาจเพียงพอ

ฉันใช้ฟังก์ชันนี้เพื่อเปิดเซสชัน SSH และเชื่อมต่อกับdtachเซสชันที่กำลังทำงานอยู่shell-mode(ถ่ายจากที่นี่ ):

(defun ssh-dtach (host)
  "Open SSH connection to remote host and attach to dtach session."
  (interactive)
  (let ((explicit-shell-file-name "dtach")
        (explicit-dtach-args '("-A" "/tmp/emacs.dtach" "-z"
                               "/bin/bash" "--noediting" "-login"))
        (default-directory (format  "/ssh:%s:" host)))
    (shell (format "*ssh %s*" host))))

แม้จะมีนิสัยใจคอเล็กน้อยสิ่งนี้ใช้งานได้ดีshell-modeแต่ใน Eshell นี่เพิ่งเริ่มต้นกระบวนการย่อยดังนั้นเทอร์มินัลจึงมีข้อ จำกัด มาก (เช่นไม่มีการเติมข้อความอัตโนมัติเส้นทาง)

ฉันจะกำหนดค่า Eshell ให้เชื่อมต่อกับdtachเซสชันที่ใช้งานอยู่เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลได้อย่างไร

แก้ไข: เมื่อฉันคิดเกี่ยวกับปัญหานี้อีกครั้งฉันตระหนักว่ามันไม่ชัดเจนทั้งหมดที่ฉันต้องการ นี่คือรายการ:

  • ฉันต้องการที่จะอยู่ใน eshell ไม่ได้อยู่ในกระบวนการย่อยบางอย่าง
  • เมื่อติดตั้งใหม่ฉันต้องการให้เอาต์พุตของรีโมตเซสชันถูกเล่นซ้ำและประวัติคำสั่งรีโมตจะพร้อมใช้งาน
  • ฉันต้องการที่จะสามารถโต้ตอบกับกระบวนการระยะไกลที่กำลังทำงานอยู่ (เช่นการyum installรอการป้อนข้อมูลของฉัน)

ดูเหมือนว่าฉันจะต้องเขียนโค้ด elisp เล็กน้อยเพื่อให้การทำงานกับ dtach ทั้งหมดนี้


โหมดเชลล์โต้ตอบกับกระบวนการเชลล์eshellคือเชลล์ - ดังนั้นโดยทั่วไปแล้วฉันคิดว่าคุณไม่สามารถทำสิ่งที่คุณต้องการได้เว้นแต่ว่าคุณเข้าถึง emacs ที่กำลังรันด้วยบัฟเฟอร์ eshell ในเซสชัน dtach หรือฉันเข้าใจผิดนี่
Tom Regner

ในeshellบรรทัดระหว่างสิ่งที่อยู่ในท้องถิ่นและสิ่งที่เป็นระยะไกลและสิ่งที่เป็นคำสั่งภายนอกและฟังก์ชั่น elisp จะเบลอ ฉันต้องการทำให้มันชัดเจนยิ่งขึ้นเพราะกระบวนการที่ทำงานจากระยะไกลสามารถโต้ตอบกับโปร่งใสได้ราวกับว่าพวกเขาอยู่ในพื้นที่ ฉันคิดว่าเกือบจะเหมือนกับการ "กลับมาทำงาน" อีกครั้ง
rekado

ที่เกี่ยวข้อง: stackoverflow.com/questions/16819248/…
sds

@sds: การทำงานscreenภายในของshell-modeจะไม่ทำงานได้ดีเพราะscreenต้องการมากกว่า terminal โง่
rekado

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.