तर्क के साथ यूनिक्स पर्यावरण चर


8

मैं अपना $ EDITOR वैरिएबल सेट करने की कोशिश कर रहा हूं जिसमें कोई विंडो नहीं है, इसलिए इसे कॉल करने का कमांड होगा emacs -nw। हालाँकि अगर मैं इसे इस तरह सेट करता हूँ:

export EDITOR="/Applications/Emacs.app/Contents/MacOS/Emacs -nw"

मुझे निम्नलिखित त्रुटि मिलती है

zsh: no such file or directory: /Applications/Emacs.app/Contents/MacOS/Emacs -n


क्या आपने जाँच की है कि क्या प्रोग्राम इस तरह के स्विच को सेट करने के लिए कॉन्फ़िगरेशन फ़ाइलों के पर्यावरण चर लेते हैं?
वॉनब्रांड

जवाबों:


7

मेरा मानना ​​है कि यह काम नहीं करता है क्योंकि शेल एक बाइनरी को फ़ाइल नाम में शामिल स्थान के साथ खोलने का प्रयास करेगा, इसलिए Emacs -nw, और नहीं खुला Emacsऔर फिर -nwविकल्प के रूप में पास करें।

कैसे $EDITORएक छोटी (निष्पादन योग्य) स्क्रिप्ट बनाने के बारे में , जैसे ~/bin/EDITOR?

#!/bin/sh
/Applications/Emacs.app/Contents/MacOS/Emacs -nw -- "$@"

फिर, बस अपने शेल के विन्यास में जोड़ें:

export EDITOR=~/bin/EDITOR

अब, EDITORउपयुक्त तर्कों के साथ स्क्रिप्ट का विस्तार करेगा $@


5

जैसा कि यहाँ बताया गया है: zsh: कमांड नहीं मिला ($ EDITOR के लिए) , zsh विस्तारित चर को एक शब्द के रूप में मानता है (जिसमें इसमें स्थान वर्ण हैं)।

संभावित समाधान हैं:

  • बैश में चलाएं जो रिक्त स्थान को ठीक से फैलाता है

  • पैरामीटर विस्तार पर '=' संशोधक का उपयोग करें: प्रलेखन में विस्तार देखें zshऔर '$ {= युक्ति}' के लिए देखें

  • $ EDITOR के रूप में कॉल करते समय eval का उपयोग करें:

    eval $EDITOR file

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.