बैश स्क्रिप्ट को चलाते समय "टर्मिनल प्रक्रिया समूह को सेट नहीं किया जा सकता"


14

मेरी init.el फ़ाइल में कोड की निम्नलिखित दो पंक्तियाँ हैं:

(setq shell-file-name "bash")
(setq shell-command-switch "-ic")

मैंने शेल स्क्रिप्ट dmenu_path का उपयोग करके निष्पादनयोग्य की एक सूची प्राप्त करने के लिए निम्नलिखित स्क्रिप्ट को निष्पादित करने का प्रयास किया।

(defun dmenu-path-out ()
  (shell-command-to-string "dmenu_path"))

मैं निम्नलिखित त्रुटि देखता हूं:

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
[
0ad
...

उपयोग करते समय मैं उस त्रुटि को वापस आने से कैसे रोक सकता हूं shell-command?


का संभवत: आंशिक डुप्लिकेट प्रश्न stackoverflow.com/questions/9670209/... वहाँ अभी तक कोई समाधान लगता है कि यदि आपके खोल के Cygwin है बैश
जूलियो

जवाबों:


11

-iझंडा अनुरोध बैश इंटरैक्टिव मोड है, जो एक टर्मिनल की आवश्यकता है में चलने वाले। इसका समाधान shell-command-switchचर को उसके डिफ़ॉल्ट मान पर छोड़ना है , जो कि बस है -c

यदि आपको वास्तव में बैश को इंटरएक्टिव मोड में चलाने की आवश्यकता है, तो आपको बाध्य के start-file-processसाथ उपयोग करके इसे छद्म टर्मिनल में चलाने की आवश्यकता होगी ।process-connection-typet


यह मेरे लिए काम नहीं किया।
डिडिएर ए।

इससे मेरा काम बनता है। एक उदाहरण के रूप में, यह कमांड बैश सत्र चला रहा है gnome-terminal, चलाता है echoऔर नए कमांड लेने के लिए तैयार है (start-file-process-shell-command "peekaboo" "*Messages*" "gnome-terminal -- bash -c 'echo Peekaboo!; bash'"); Elisp कमांड से कोई भी आउटपुट *Messages*बफर में भेजा जाता है । ध्यान दें कि मैंने start-file-process-shell-commandइसके बजाय प्रयोग किया है start-file-process, इसलिए मुझे शेल कार्यक्रमों को रास्ता देने की आवश्यकता नहीं है।
आर्क स्टैंटन

0

क्या आपने -iउपनामों का विस्तार करने के लिए बैश प्राप्त किया? यदि ऐसा है, तो इसके बजाय /programming/12224909 में दिए गए हैं

(setenv "BASH_ENV" "~/.bashrc")

अपने .emacs में और

shopt -s expand_aliases

अपने .bashrc में। पूर्व आपके .bashrc को आपके उप-गोले पर चलाने का कारण बनता है, और बाद वाला गैर-लॉगिन बेल के गोले में उर्फ ​​विस्तार की अनुमति देता है।

आप अपने उपनामों और शॉप लाइन के साथ एक अलग शेल स्क्रिप्ट बनाकर एक बेहतर जा सकते हैं, और इसे BASH_ENV मान के रूप में उपयोग कर सकते हैं; जो आपके पूर्ण ~ / .bashrc से अधिक तेज़ी से चल सकता है।


क्या आप कृपया उस विवरण को संक्षेप में प्रस्तुत कर सकते हैं? अन्यथा यह अनिवार्य रूप से एक लिंक-केवल उत्तर है और इसलिए जोखिम को हटाया जा रहा है।
ड्रयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.