Eshell के भीतर से दूरस्थ होस्ट पर cwd में एप्लिकेशन चलाएं


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 $ 

यह तभी काम करता है जब मैं स्क्रिप्ट को पूरा ट्राम पथ प्रदान करता हूं:

/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

मेरा मानना ​​है कि बग एस्लील साइड पर है, क्योंकि ट्रम्प को यह जानने का कोई तरीका नहीं है कि "/ ssh: रिमोट 1: ..." एक वैध रिमोट कमांड नहीं है (हालांकि अगर यह था, तो शायद हमारे पास बहुत अधिक होगा बहु-हॉप ट्रम्प के साथ समस्याओं ... लेकिन वैसे भी)। और वास्तव में sane बात करता है जब कमांड स्पष्ट रूप से एक ट्रम्प पथ है।


आसानी से काम करता है। इस समाधान के लिए धन्यवाद।
बोकापार्टा-आईटी

1
यह वास्तव में एक बग है और पहले से ही ऊपर की तरफ तय किया गया है।
रेकैडो

@ ट्रेकडो, ईमैक का कौन सा संस्करण इसमें तय किया गया है?
djhaskin987

मेरा मानना ​​है कि यह इस प्रतिबद्धता के साथ तय किया गया था: git.savannah.gnu.org/cgit/emacs.git/commit/…
rekado

मुझे इस बग का सामना करना पड़ा और उपरोक्त सुधार को लागू करना पड़ा (जो समस्या को ठीक करता है --- इसके लिए आपको धन्यवाद)। मैं emacs चला रहा हूँ 24.5.1 होमब्रे के माध्यम से स्थापित MAC। अपस्ट्रीम फिक्स मेरे लिए समस्या को ठीक नहीं करता है।
बटला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.