Запустіть додаток у cwd на віддаленому хості зсередини eshell


12

Я часто використовую Eshell для підключення до віддалених систем. У цих віддалених системах я іноді хочу запускати скрипти в поточному робочому каталозі. У звичайному терміналі я напишу це:

./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)))

Знизу, проблема полягає в тому, що Бродяга закінчується побудовою віддаленого командного рядка форми (я видаляю деякі втечі, щоб зробити це зрозумілішим):

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, оскільки Tramp не може знати, що "/ ssh: remote1: ..." не є дійсною віддаленою командою (хоча якби вона була, ми, мабуть, мали б набагато більше проблеми з мульти-хоп-бродягою ... але все одно). І Ешел справді робить розумне, коли команда явно проходить шлях.


Працює безперебійно. Дякую за це рішення.
Boccaperta-IT

1
Це дійсно помилка і вже виправлена ​​вгору за течією.
rekado

@rekado, в якій версії emacs він зафіксований?
djhaskin987

Я вважаю, що це було вирішено за
rekado

Я зіткнувся з цією помилкою, і мені довелося застосувати вищевказане виправлення (що виправляє проблему --- дякую за це). Я запускаю emacs 24.5.1, встановлений через homebrew на mac. Виправлення вгору за течією не виправляє проблему для мене.
butala
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.