ฉันมักจะใช้หน้าจอ 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
บรรทัดระหว่างสิ่งที่อยู่ในท้องถิ่นและสิ่งที่เป็นระยะไกลและสิ่งที่เป็นคำสั่งภายนอกและฟังก์ชั่น elisp จะเบลอ ฉันต้องการทำให้มันชัดเจนยิ่งขึ้นเพราะกระบวนการที่ทำงานจากระยะไกลสามารถโต้ตอบกับโปร่งใสได้ราวกับว่าพวกเขาอยู่ในพื้นที่ ฉันคิดว่าเกือบจะเหมือนกับการ "กลับมาทำงาน" อีกครั้ง
screen
ภายในของshell-mode
จะไม่ทำงานได้ดีเพราะscreen
ต้องการมากกว่า terminal โง่
eshell
คือเชลล์ - ดังนั้นโดยทั่วไปแล้วฉันคิดว่าคุณไม่สามารถทำสิ่งที่คุณต้องการได้เว้นแต่ว่าคุณเข้าถึง emacs ที่กำลังรันด้วยบัฟเฟอร์ eshell ในเซสชัน dtach หรือฉันเข้าใจผิดนี่