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


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.