टर्मिनल को बंद किए बिना स्क्रिप्ट कैसे चलाएं?


69

मेरे पास फ़ाइल में एक स्क्रिप्ट है bla.shऔर यह निष्पादन योग्य है। जब मैं उस पर क्लिक करता हूं , तो स्क्रिप्ट निष्पादित होती है और विंडो बंद हो जाती है। मुझे खुली रहने के लिए खिड़की चाहिए

cmd /k** commandविंडोज में कमांड जैसा कुछ ।

पुनश्च मैं उपयोग नहीं करना चाहता pause, लेकिन मैं स्क्रिप्ट निष्पादित होने के बाद अधिक कमांड लिखने में सक्षम होना चाहता हूं।

जवाबों:


81

$SHELLअपनी स्क्रिप्ट के अंत में रखें :

वैकल्पिक शब्द

एक छोटा दोष: चूंकि यह शेल gnome-terminalके bashरूप में नहीं चल रहा है , इसलिए यह इसे एक एप्लिकेशन के रूप में रखेगा और टर्मिनल को बंद करने का प्रयास करते समय इसके बारे में एक चेतावनी प्रदर्शित करेगा:

There is still a process running in this terminal
Closing the terminal will kill it.

मुझे इस चेतावनी को छिपाने का कोई अच्छा तरीका नहीं मिला है। यदि आप चाहें, तो आप इसे पूरी तरह से चलाकर अक्षम कर सकते हैं:

gconftool --set /apps/gnome-terminal/global/confirm_window_close --type boolean false

यदि आप xtermसूक्ति-टर्मिनल के बजाय उपयोग कर रहे हैं तो ऐसा नहीं होता है ; क्या यह आपको परेशान करना चाहिए।


20
आप सेटिंग्स को बदलने के बिना चेतावनी को दूर करने के लिए exec $SHELLबस के बजाय उपयोग कर सकते हैं $SHELL
एंड्रिया कोरबेलिनी

1
लेकिन यह समाधान एक अतिरिक्त शेल / प्रक्रिया बनाता है। क्या इससे बचा जा सकता है?
lucasvc

मुझे ऐसा करने का कोई तरीका नहीं पता, नहीं। समस्या यह है कि पहली बार बैश प्रक्रिया समाप्त होने के बाद आप मानक IO पर अपना हैंडल खो देते हैं, इसलिए आपको इन चालों पर गुजरने वाले डेमॉन के साथ कुछ चालबाजी करनी होगी, जो तब अधिक त्रुटि-प्रवण और कष्टप्रद होगा।
Stefano Palazzo

10

सूक्ति टर्मिनल का उपयोग करना

सूक्ति-टर्मिनल का उपयोग करना; कमांड स्ट्रिंग के अंत में बैश और -c विकल्प कार्यों के साथ स्क्रिप्ट को कॉल करना। उदाहरण के लिए:

gnome-terminal -e "bash -c ~/script.sh;bash"

यह निम्न कार्य करता है:

  1. सूक्ति-टर्मिनल खोलता है
  2. स्क्रिप्ट script.sh निष्पादित करता है
  3. स्क्रिप्ट खत्म होने के बाद बैश प्रॉम्प्ट दिखाता है।

आप विंडो बंद करके गनोम-टर्मिनल विंडो से बाहर निकल सकते हैं या बैश प्रॉम्प्ट पर बाहर निकल सकते हैं। या आप अनुरोध के अनुसार अधिक कमांड टाइप कर सकते हैं।



7

यदि आपके पास स्क्रिप्ट तक पहुँच है, तो आप अंत में निम्नलिखित कोड भी जोड़ सकते हैं:

read

वह कोड बंद होने से पहले इनपुट की प्रतीक्षा करेगा, इसलिए जब तक आप Enter दबाते हैं तब तक टर्मिनल खुला रहेगा।


1
मैं अक्सर उपयोग bashअंत में, लेकिन readअनुमति देता है मुझे बस के साथ विंडो को बंद करने ctrl+cया enterबजाय, ctrl+shift+wया alt+f4। यह सुविधाजनक है जब आप अपनी स्क्रिप्ट पर तेजी से पुनरावृति करते हैं।
hsandt

5

उपयोग bashके --init-fileलिए एक अस्थायी पाइप के साथ विकल्प:

bash --init-file <(echo './<script_name>')

उदाहरण के लिए:

bash --init-file <(echo './bla.sh')

2

कमांड स्ट्रिंग के अंत में उपयोग करना xtermऔर जोड़ना ;bash। उदाहरण के लिए:

xterm -e "bash ~/script.sh;bash"

यह निम्न कार्य करता है:

  1. xterm खोलता है
  2. स्क्रिप्ट निष्पादित करता है script.sh
  3. स्क्रिप्ट खत्म होने के बाद बैश प्रॉम्प्ट दिखाता है।

आप विंडो बंद करके या exitbash प्रॉम्प्ट पर टाइप करके xterm विंडो से बाहर निकल सकते हैं । या आप अनुरोध के अनुसार अधिक कमांड टाइप कर सकते हैं।


1
xterm -e bash --rcfile bla.sh

यह एक नई विंडो में स्क्रिप्ट को चलाएगा, और यहां तक ​​कि यह समाप्त होने के बाद आपको विंडो का नियंत्रण भी देगा।

हालांकि नई विंडो ~/.bashrcसामान्य रूप से लोड नहीं होगी , क्योंकि हम bla.shइसके बजाय भाग गए । इसे डालकर दोबारा बनाया जा सकता है

. ~/.bashrc

के ऊपर bla.sh

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