เรียกใช้แอปพลิเคชันใน cwd บนรีโมตโฮสต์จากภายใน eshell


12

ฉันมักจะใช้ Eshell เพื่อเชื่อมต่อกับระบบระยะไกล ในระบบระยะไกลเหล่านั้นบางครั้งฉันต้องการเรียกใช้สคริปต์ในไดเรกทอรีการทำงานปัจจุบัน ใน terminal ปกติฉันจะพิมพ์สิ่งนี้:

./my-script.sh

น่าเสียดายที่ภายใน Eshell สิ่งนี้จะไม่ทำงาน:

~ $ cd /remote1:~
/ssh:remote1:/home/rekado $ ./my-script.sh 
env: /ssh:remote1:/home/rekado/my-script.sh: No such file or directory
/ssh:remote1:/home/rekado $ 

ใช้งานได้เฉพาะถ้าฉันให้เส้นทาง TRAMP ที่สมบูรณ์ไปยังสคริปต์:

/ssh:remote1:/home/rekado $ /ssh:remote1:/home/rekado/my-script.sh 
It works!
/ssh:remote1:/home/rekado $ 

มีวิธีที่จะโน้มน้าวให้ Eshell ขยายตัว.โดยอัตโนมัติหรือไม่

เพื่อเป็นการหลีกเลี่ยงปัญหาปัจจุบันฉันใช้ฟังก์ชั่นที่ถูกผูกไว้กับC-c .ที่แทรกเส้นทางแบบเต็มปัจจุบันในบรรทัดคำสั่ง ฉันชอบที่จะ.ทำตัวตามที่คาดไว้

คำตอบ:


11

ที่ดูเหมือนว่าเป็นข้อบกพร่องeshellคุณควรรายงาน

ฉันคิดว่าคุณสามารถแก้ไขได้

(defadvice eshell-gather-process-output (before absolute-cmd (command args) act)
  (setq command (file-truename command)))

Bottom-line ปัญหาคือว่าคนจรจัดจบลงด้วยการสร้างบรรทัดคำสั่งระยะไกลของแบบฟอร์ม

cd /home/rekado && exec env PS1='/ssh:remote1:/home/rekado $' /ssh:remote1:/home/rekado/my-script.sh

นี่คือเหตุผลที่คุณจบลงด้วยข้อความ "ลึกลับ" เกี่ยวกับ env

สิ่งที่ต้องการสร้างแทน (และนั่นคือสิ่งที่ทำได้โดยคำสั่งด้านบน) คือสิ่งที่ต้องการ

cd /home/rekado && exec env PS1='/ssh:remote1:/home/rekado $' /home/rekado/my-script.sh

ฉันเชื่อว่าข้อผิดพลาดอยู่ด้าน eshell เนื่องจากคนจรจัดไม่มีทางรู้ว่า "/ ssh: remote1: ... " ไม่ใช่คำสั่งระยะไกลที่ถูกต้อง (แม้ว่าจะเป็นเราก็อาจจะมีอีกมากมาย มีปัญหากับคนจรจัดหลายคน ... แต่ยังไงก็ตาม) และ eshell ทำสิ่งที่มีสติอย่างแท้จริงเมื่อคำสั่งนั้นเป็นเส้นทางคนจรจัดอย่างชัดเจน


ทำงานได้อย่างราบรื่น ขอบคุณสำหรับการแก้ปัญหานี้
Boccaperta-IT

1
มันเป็นข้อผิดพลาดแน่นอนและได้รับการแก้ไขต้นน้ำแล้ว
rekado

@rekado เวอร์ชัน emacs ใดที่ได้รับการแก้ไขแล้ว
djhaskin987

ฉันเชื่อว่ามันได้รับการแก้ไขด้วยความมุ่งมั่นนี้: git.savannah.gnu.org/cgit/emacs.git/commit/…
rekado

ฉันพบข้อผิดพลาดนี้และต้องใช้การแก้ไขด้านบน (ซึ่งแก้ไขปัญหาได้ --- ขอบคุณสำหรับสิ่งนั้น) ฉันใช้ emacs 24.5.1 ติดตั้งผ่าน homebrew บนเครื่อง mac การแก้ไขอัปสตรีมไม่สามารถแก้ไขปัญหาให้ฉันได้
butala
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.