सूक्ति-टर्मिनल के साथ कई टैब खोलना


16

मैं एक कमांड बनाने की कोशिश कर रहा हूं जो रेल स्टैक, रेल्स एस, स्पॉर्क और ऑटोटेस्ट से 3 सेवाएं खोलेगा। मैं इन कमांड को व्यक्तिगत रूप से 3 टर्मिनल खोलकर, एप फोल्डर में जाकर चला सकता हूं। मैं 3 नए टैब भी खोल सकता हूं और प्रत्येक पर कमांड चला सकता हूं।

समस्या यह है कि जब मैं सूक्ति-टर्मिनल के माध्यम से टैब खोलने की कोशिश करता हूं तो वे विफल हो जाते हैं:

gnome-terminal --tab --title="rails s" -e "rails s" --tab --title="spork" -e "spork" --tab --title="autotest" -e "autotest"

त्रुटि (स्पार्क और ऑटोटेस्ट के लिए):

There was an error creating the child process for this terminal
Failed to execute child process "spork" (No such file or directory)

हैरानी की बात है कि यह 'रेल्स एस' के लिए काम करता है (टैब सर्वर को चालू दिखाता है)।

कोई विचार?

जवाबों:


9

नीचे stackoverflow.com से एक उत्तर दिया गया है

  1. eval "$BASH_POST_RC"अपने .bashrc के अंत में एक जोड़ें

  2. BASH_POST_RCप्रत्येक टैब के लिए पर्यावरण चर को उस कमांड पर सेट करें जिसे आप निष्पादित करना चाहते हैं, जैसे: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'


15

लागू gnome-terminalतीन बार और के साथ एक साथ आदेशों stringing && नहीं होगा काम करते हैं, और टैब एक ही टर्मिनल में दिखाई नहीं देंगे, और वास्तव में आप अगले प्रकट करने के लिए के लिए पहले टर्मिनल छोड़ने करना होगा।

यह सुनिश्चित करने का तरीका कि आपके सभी टैब एक gnome-terminalही समय में सभी टैब को खोलते हैं, --tab-with-profile=PROFILENAMEस्विच का उपयोग करना है । नीचे दिए गए आदेश में आप पहली कमांड को छोड़ सकते हैं gnome-terminal --tabजैसे कि यह उत्पन्न होने वाली पहली विंडो है; अब आप सभी को यह जानना होगा कि आप कौन सी प्रोफ़ाइल का उपयोग कर रहे हैं और आप --tab-with-profile=YourProfileअन्य कमांडों को लागू करने के लिए उपयोग कर सकते हैं और वे सभी मूल टर्मिनल के खुलने पर एक बार दिखाई देंगे।

यहाँ आपकी कमांड संशोधित है:

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"

(भविष्य के पाठकों के लिए: -eयहां दी गई कमांड लाइन का परीक्षण करने के बाद दिए गए प्रोग्राम नामों को स्थान दें; याद रखें कि आपके लक्ष्यों को -eस्थापित किया जाना चाहिए और , जैसे कि किसी पूर्ण पथ का उपयोग $PATH$PATHकरें, उदाहरण के लिए, /opt/mike/program)

उन वास्तविक प्रोफ़ाइल को निर्दिष्ट करना याद रखें जिन्हें आप --tab-with-profileस्विच के लिए उपयोग कर रहे हैं । पहले आह्वान का gnome-terminalउपयोग करना चाहिए --tabऔर बाकी सभी --tab-with-profile। इस विधि के साथ एक ही उदाहरण में बड़ी संख्या में टैब खोलना संभव होना चाहिए gnome-terminal

वर्तमान में आप जिस प्रोफ़ाइल का उपयोग कर रहे हैं उसे क्लिक करके खोजें gnome-terminalऔर प्रोफ़ाइल देखें और जिस पर आप वर्तमान में उपयोग कर रहे हैं उस पर एक मार्कर होगा:

यहाँ छवि विवरण दर्ज करें

अधिक जानकारी के लिए प्रोफ़ाइल वरीयताओं पर जाएं और प्रोफ़ाइल का नाम जांचें।

अधिक जानकारी के लिए, देखें man gnome-terminalऔर उबंटू ऑनलाइन का प्रबंधन करता है


नोट :

यदि आपको अपने कार्यक्रमों को लॉन्च करने में परेशानी होती है gnome-terminal, तो या तो स्थान जोड़ें $PATH, या एक सिमलिंक बनाएं और इसे किसी $PATHस्थान पर रखें, या (जो यहां बहुत उपयोगी था): एक साधारण बैश आवरण स्क्रिप्ट बनाएं और इसे gnome-terminalकमांड लाइन में ऊपर कॉल करें । (आप इसे एक पूर्ण मार्ग के साथ कहते हैं: अर्थात /location/of/scriptऔर केवल इसका नाम नहीं है।)

उदाहरण के तौर पे:

#!/bin/bash
cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork
exit 0

फिर स्क्रिप्ट को नाम दें, इसे निष्पादन योग्य बनाएं और इसे gnome-terminalऊपर कमांड लाइन में कॉल करें । सभी गैर रेपो कार्यक्रमों के लिए यह करें जो समस्याग्रस्त हैं।


मुझे प्रोफ़ाइल कैसे पता चलेगी? (मैंने डिफ़ॉल्ट, मेरे उपयोगकर्ता नाम और ~ / .profile के साथ प्रयास किया)
मैनुअल

यह डिफ़ॉल्ट कहता है, लेकिन मुझे एक ही त्रुटि मिलती है --tab-with-profile = Default
Manuel

@ मैनुअल अन्य संभावना यह है कि लक्ष्य कमांड आपके पास $PATHनहीं हैं, sporkएक निरपेक्ष पथ के साथ और अन्य का स्थान निर्दिष्ट करें ।

मैं जिस कमांड का उपयोग कर रहा हूं वह है gnome-terminal --tab --title = "rails s" -e "rails s" --tab-with-profile = Default --title = "spork" -e "spork" - tab-with-profile = Default --title = "autotest" -e "autotest" (अपने उत्तर से कॉपी / पेस्ट)। $ PATH के बारे में, अगर यह समस्या है तो यह मेनू के माध्यम से खोले गए टैब पर काम क्यों करता है?
मैनुअल

@ मैन्युअल जैसा कि आप अपने प्रश्न में कहते हैं, आपको "ऐप फ़ोल्डर" पर जाना होगा और उन्हें वहां से चलाना होगा, जिसका अर्थ है कि वे अंदर नहीं हैं $PATH। उत्तर में विधि वह है जिसका उपयोग मैं सभी रिपॉजिटरी स्थापित कमांड-लाइन प्रोग्राम को एक ही gnome-terminalविंडो में अलग-अलग टैब में लॉन्च करने के लिए करता हूं , और यह हमेशा काम करता है, क्योंकि वे अन्य प्रोग्राम $ PATH में हैं।

0

gnome-terminal --tab -- sh -c "python3 'test.py' ; bash"

इस कोड ने एक पायथन स्क्रिप्ट चलाने वाले टर्मिनल में नया टैब खोला है और जब इसका ओवर होता है, तो यह नया टैब बंद नहीं होगा, क्योंकि मैंने इस कोड के अंत में 'बैश' जोड़ा था ...

यदि आप इसे कई बार चाहते हैं, तो इसे अपने बैश स्क्रिप्ट में थोड़ी देर के लूप में डालें

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