प्रोग्रामेटिक रूप से खुला जीनोम टर्मिनल और रन कमांड - लिनक्स, बैश, खोल

आप प्रोग्रामिक रूप से टर्मिनल एप्लिकेशन को कैसे खोलते हैं, जैसे जीनोम टर्मिनल, और चल रहा है cd /some/path; source ./setup.bash? मैं एक ऐसी स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो स्वचालित रूप से काम के लिए कुछ सामान्य टर्मिनल और आईडीई लॉन्च करेगी।

मैंने कोशिश की:

gnome-terminal --tab --working-directory="/some/path" -e "source ./setup.bash"

लेकिन यह एक gnome-टर्मिनल विंडो लॉन्च करता है, लेकिन विंडो त्रुटि दिखाती है:

Failed to execute child process "source" (No such file or directory)

संभवतः, यह इसलिए है क्योंकि यह "बैश में कमांड निष्पादित नहीं कर रहा है, इसलिए मैंने कोशिश की:

gnome-terminal --tab --working-directory="/some/path" -e "bash -c "source ./setup.bash""

हालांकि, ऐसा कुछ भी नहीं लगता है। यह कोई खिड़की नहीं लॉन्च करता है और न ही किसी भी स्टडआउट या स्टडर आउटपुट का उत्पादन करता है।

सबसे नज़दीकी मैं प्राप्त कर सकता था:

gnome-terminal --tab --working-directory="/some/path" -e "bash -c "source ./setup.bash; bash -i""

यह gnome टर्मिनल लॉन्च करता है और स्रोत लगता है setup.bash सही ढंग से, लेकिन कुछ टर्मिनल स्वरूपण द्वारा सेट किया गया setup.bash नहीं दिखाया गया है, संभवतः क्योंकि मैं एक नया लॉन्च कर रहा हूं bash खोल।

क्या कोई बेहतर तरीका है?

उत्तर:

उत्तर № 1 के लिए 1

जब आप -e विकल्प gnome-terminal का उपयोग करते हैंएक नया खोल शुरू किए बिना उस कमांड को चलाएगा (आप कुछ भी चला सकते हैं: gnome-terminal -e gedit), इसलिए यदि आप बैश खोल में एक नया टर्मिनल / टैब में कमांड चलाने के लिए चाहते हैं तो आपको ऐसा कुछ करना होगा :

gnome-terminal -x bash -c "command"

लेकिन ध्यान दें कि जब "कमांड" टर्मिनल / टैब समाप्त होता है तो भी समाप्त हो जाएगा।


जवाब के लिए 0 № 2

आप चर सेट करने के लिए बैश स्टार्टअप फ़ाइल निर्दिष्ट कर सकते हैं। हो सकता है कि आप उस फाइल को चाहते हों source $HOME/.bashrc इस में:

$ gnome-terminal --working-directory="/some/path" -e "bash --rcfile ./setup.bash -c gdb"

उसके बाद आप एक कमांड डाल सकते हैं, जैसा कि मेरे पास है -c gdb


संबंधित सवाल
सबसे लोकप्रिय