बैश में नौकरी पर नियंत्रण अक्षम करना (CTRL-Z)


12

यह मेरे साथ कभी-कभी होता है, कि मैं दुर्घटना से CTRL+ दबाता हूं Zऔर मेरा एप्लिकेशन पृष्ठभूमि में गायब हो जाता है। मुझे पता है, मैं इसे वापस ला सकता हूं fg, इसलिए यह इतनी बड़ी बात नहीं है। लेकिन मैं job controlवैसे भी इसे बंद करने के बारे में सोच रहा हूं । अपने पूरे जीवन में, मुझे एक उदाहरण याद नहीं आ रहा है जब मुझे इसकी आवश्यकता थी, यह मुझे अतीत के अवशेष के रूप में देखता है।

क्या यह job controlपूरी तरह से अक्षम करने के लिए ठीक है ? या क्या मुझे कुछ याद आ रहा है, और यह सुविधा उपयोगी हो सकती है? मैं इसे अपने में कैसे अक्षम करूंगा.bashrc

अपडेट करें:

मैंने set +m@Falsenames द्वारा सुझाए अनुसार प्रयास किया है। हालांकि, यह केवल तभी काम करता है जब मैं इसे टर्मिनल में टाइप करता हूं। set +mमेरे में जोड़ने .bashrcका कोई प्रभाव नहीं है।


1
पुन: अपडेट: यह तथ्य कि $-(सक्रिय विकल्पों की सूची) में अब mवह जगह नहीं है जब आप set +mअपने स्थान पर लिखते हैं ~/.bashrcकि बैश नौकरी नियंत्रण को बंद करने की कोशिश कर रहा है, लेकिन अंत में बग के कारण ऐसा नहीं करता - के माध्यम से रिपोर्टिंग के लायक हो सकता है Bug-bash@gnu.org
mklement0

जवाबों:


8

आप निगरानी मोड का उपयोग बंद करने के लिए अपनी कमांड लाइन में निम्नलिखित जोड़ सकते हैं।

सेट + एम

यदि आपको वास्तव में बाद में ctrl-z कार्यक्षमता की आवश्यकता है, तो आप उस सत्र के लिए निगरानी सक्षम करने के लिए 'सेट -m' टाइप कर सकते हैं।

से आदमी पार्टी । ध्यान दें कि यह '-m' के लिए है, जिसमें "+ m" टॉगल किया गया है जो अक्षम करने के लिए सेटिंग है।

set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...] 
....
-m
    Monitor mode. Job control is enabled. This option is on by default for interactive
    shells on systems that support it (see JOB CONTROL above). Background processes 
    run in a separate process group and a line containing their exit status is printed
    upon their completion. 

एक आखिरी खाई के प्रयास के रूप में, आप "- -नेबल-जॉब-कंट्रोल" ध्वज के बिना मैन्युअल रूप से बैश के एक संस्करण को संकलित करना चाह सकते हैं। यहां GNU से एक त्वरित इंस्टॉल गाइड है। यदि आप इस मार्ग पर जाने का चयन करते हैं, तो बस बैश अपेक्षा नौकरी नियंत्रण के माध्यम से चलने की स्थिति में बिन / बैश को प्रतिस्थापित न करें। इसके बजाय, एक /bin/bash.alt या दूसरी फ़ाइल बनाएं। आपके डिफ़ॉल्ट शेल को इस वैकल्पिक रूप में बदलकर usermod या संपादन / etc / passwd को रूट के रूप में चलाया जा सकता है।


set +mटर्मिनल में काम करता है, लेकिन जब मैं इसे अपने में जोड़ता हूं .bashrc, तो इसका कोई प्रभाव नहीं पड़ता है।
मार्टिन वेगाटर

आह, तुम सही हो। यह उस बिंदु पर विशिष्ट स्क्रिप्ट के लिए स्थानीयकृत है। तो फिर पार्टी में अपनी चूक का दावा है।
Falsenames

अपनी बैश को संकलित करना नौकरी नियंत्रण को अक्षम करने के लिए काफी अधिक कीमत लगता है। कुछ सेटिंग होनी चाहिए जो काम करती है .bashrc
मार्टिन वेग्टर

चूंकि यह सब संकलन के समय पर सेट किया गया है, इसलिए आवश्यक नहीं है कि इसे सेटअप फ़ाइल में बदलने का एक तरीका हो जो शेल के चलने के बाद लोड हो। यहाँ मुद्दा यह है कि किसी ने आपके द्वारा उपयोग किए जा रहे डिस्ट्रो के लिए डिफ़ॉल्ट रूप में सक्षम जॉब कंट्रोल के साथ बैश संकलित करने का निर्णय लिया। मैं वास्तव में व्यक्तिगत रूप से इसके खिलाफ बहस नहीं कर सकता, क्योंकि मैं हर दिन काम पर विभिन्न नौकरी नियंत्रणों का उपयोग करता हूं, और मुझे यकीन नहीं है कि मैं इसके बिना आसानी से जीवन को समायोजित कर सकता हूं। दी, यह मेरा अनुभव है, तुम्हारा नहीं ... यही कारण है कि विकल्प देने के लिए, संकलन पर झंडे हैं।
फाल्स्नेम्स

4

stty susp undefअधिकांश कार्यक्रमों के लिए कीबोर्ड द्वारा शुरू किए गए सस्पेंड सिग्नल को अक्षम कर देगा, हालांकि, जैसे आदेश vimऔर emacsजिनके लिए विशिष्ट बाइंडिंग Ctrl-Zहैं उन्हें व्यक्तिगत रूप से पुन: कॉन्फ़िगर करना होगा।

आप उस स्टिकी कमांड को अपने में जोड़ सकते हैं ~/.bash_profileया ~/.profileलॉगआउट कर सकते हैं , फिर से लॉगिन कर सकते हैं।


यह वास्तव में कुछ कार्यक्रमों के लिए काम करता है। लेकिन उदाहरण के लिए mcयह काम नहीं करता है। जो मूल रूप से पुष्टि करता है कि आपने क्या कहा। क्या कोई सार्वभौमिक समाधान नहीं है जो सभी के लिए काम करता है?
मार्टिन वेगाटर

मैंने अभी देखा है, के लिए set +mकाम करता है mc, लेकिन केवल अगर मैं इसे टर्मिनल में टाइप करता हूं, .bashrcया नहीं .profile
मार्टिन वेगाटर

3

या क्या मुझे कुछ याद आ रहा है, और यह सुविधा उपयोगी हो सकती है?

प्रश्न के इस भाग का उत्तर देने के लिए: Cz / fgकॉम्बो मेरे vim वर्कफ़्लो के लिए आवश्यक है। उदाहरण के लिए, मैं Cz पसंद करते हैं> git commit> fgvim के भीतर से Git रैपर का उपयोग कर सकते हैं।

Cz शेल को IDE के रूप में मानने में मदद करता है, " एक काम करो " सिद्धांत के अनुरूप है। (यह "आईडीई के रूप में संपादक" के बजाय)।


1
^Zअभी भी उपयोगी है - लेकिन यह तब भी अधिक उपयोगी था जब एक टर्मिनल एक खिड़की नहीं थी, लेकिन आपके सामने एक बॉक्स था। और आपके पास केवल एक था।
वोल्कर सेगेल

2

trap "" SIGTSTPअपनी स्क्रिप्ट में जोड़ें । यह सिग्नल को पकड़ लेगा और इसे नजरअंदाज कर देगा।

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