डिफ़ॉल्ट टर्मिनल एमुलेटर का पता लगाएं


5

वर्तमान डेस्कटॉप वातावरण में किस टर्मिनल इम्यूलेटर ( xterm, gnome-terminal...) का उपयोग किया जाएगा? जैसे xdg-open, लेकिन टर्मिनल एमुलेटर के लिए।

मैंने पहले ही xdg-terminalअपने Xubuntu इंस्टॉलेशन पर स्क्रिप्ट की कोशिश की , जिसमें कोई किस्मत नहीं है:

./xdg-terminal.sh: 305: [: x: unexpected operator
./xdg-terminal.sh: 399: [: xxterm: unexpected operator
xdg-terminal: configured terminal program 'xterm' not found or not executable

यह C ++ प्रोग्राम में उपयोग करने के लिए होगा, इसलिए कोई भी स्क्रिप्ट, पैकेज या अंतर्निहित कमांड करेगा।

सहायता के लिए धन्यवाद !


1
क्या आप सही शेल के साथ उस स्क्रिप्ट को चला रहे हैं? उन त्रुटियों की तरह प्रतीत होता है जो मुझे उम्मीद होगी कि यदि आप एक अलग शेल का उपयोग कर रहे थे जिसमें स्क्रिप्ट लिखी गई थी या ऐसा कुछ था
एरिक रेनॉफ

क्या आपको वास्तव में यह पहचानने में सक्षम होने की आवश्यकता है कि कौन सा टर्मिनल एमुलेटर डिफ़ॉल्ट है? या अभी इसे लॉन्च करें?
एंग्मॉन्ट डेम

मुझे बस इसे लॉन्च करने की आवश्यकता है
natinusala

1
डेबियन / उबंटू पर x-terminal-emulator। मुझे नहीं पता कि यह डिस्ट्रोस में सामान्य है या नहीं।

यह प्रतीत नहीं होता
नटीनसला

जवाबों:


1

संक्षिप्त जवाब

डिफॉल्ट टर्मिनल के पार क्या है, यह जानने के लिए कोई मानक नहीं है। वास्तव में, उपयोगकर्ता 'डिफ़ॉल्ट रूप से' डेस्कटॉप वातावरण के साथ जहाजों की तुलना में पूरी तरह से अलग टर्मिनल का उपयोग कर सकता है। आप केवल अलग-अलग सिस्टम चर और कॉन्फिग फाइलों को देखकर इसका अनुमान लगा पाएंगे।

लंबा जवाब

आप आगे बढ़ने के अपने तरीके का अनुमान लगाने की कोशिश कर सकते हैं $TERM

कृपया man term.5और / या man term.7(शब्द मैनुअल पेज के पृष्ठ ५ और or ) देखें।

पर्यावरण चर TERM में सामान्य रूप से आपके द्वारा उपयोग किए जा रहे टर्मिनल, कंसोल या डिस्प्ले-डिवाइस प्रकार का नाम होना चाहिए। यह जानकारी आपके संपादक और मेलर सहित सभी स्क्रीन-उन्मुख कार्यक्रमों के लिए महत्वपूर्ण है।

एक डिफ़ॉल्ट TERM मान / etc / inittab (Linux और सिस्टम-वी-जैसे UNIXes) या / etc / ttys (BSD UNIXes) द्वारा प्रति-पंक्ति के आधार पर सेट किया जाएगा। यह लगभग हमेशा वर्कस्टेशन और माइक्रो कंप्यूटर कंसोल के लिए पर्याप्त होगा।

मेरे मंज़रो i3 पर स्थापित करें

$ echo $TERM
rxvt-unicode-256color

जिसके लिए अन्य नाम है urxvt। इसलिए आप डिफ़ॉल्ट टर्मिनल का सही नाम पाने की उम्मीद भी नहीं कर सकते हैं।

जैसा कि इस उत्तर में विस्तृत है

यदि आपके $ TERM में [कुछ ऐसा है जिसे आप नहीं पहचानते], ध्यान से अपने कॉन्फ़िगरेशन की जांच करें, जिसमें शामिल हैं:

  • / etc / inittab में agetty लाइनें (उन्हें अंत में linux कहना चाहिए)
    • सिस्टम-वाइड शेल स्टार्टअप स्क्रिप्ट
      • / etc / प्रोफाइल, /etc/profile.d/*.sh
      • /etc/bash.bashrc (यदि बैश का उपयोग कर रहे हैं)
    • अपने स्वयं के शेल स्टार्टअप स्क्रिप्ट
      • ~ / .profile, ~ / .bash_profile, ~ / .bash_login, ~ / .bash

सलाह: बस ज्ञात टर्मिनल एमुलेटर की एक सूची के माध्यम से जाना

डिफ़ॉल्ट रूप से i3 के साथ आता है i3-sensible-terminal। इसके अनुसार यह मैनुअल है

i3-समझदार-टर्मिनल को शुरू करने के लिए i3 डिफॉल्ट कॉन्फिगर में एक टर्मिनल शुरू किया जाता है। यह रैपर स्क्रिप्ट आवश्यक है क्योंकि कोई वितरण-स्वतंत्र टर्मिनल लॉन्चर नहीं है (लेकिन उदाहरण के लिए डेबियन में एक्स-टर्मिनल-एमुलेटर है)। वितरण स्क्रिप्ट इस तरीके से शिपिंग के लिए जिम्मेदार हैं जो वितरण के लिए उपयुक्त है।

और जिस तरह से यह काम करता है वह आमतौर पर इस्तेमाल होने वाले टर्मिनल एमुलेटर की सूची से गुजर रहा है

यह निम्नलिखित में से एक को शुरू करने की कोशिश करता है (उस क्रम में):

  • $ टर्मिनल (यह एक गैर-मानक चर है)
  • एक्स-टर्मिनल-एमुलेटर (केवल डेबियन और डेरिवेटिव पर मौजूद)
  • urxvt
  • rxvt
  • Termit
  • टर्मिनेटर
  • ...

कहा पे

  • $TERMINAL आमतौर पर इसका इस्तेमाल होने पर पूर्वोक्त स्टार्टअप स्क्रिप्ट में सेट किया जाता है।
  • x-terminal-emulator डिफ़ॉल्ट टर्मिनल के लिए पूछने का डेबियन तरीका है (उबंटू पर काम करता है)

एक बैश स्क्रिप्ट में, कि कुछ की तर्ज पर कुछ देना होगा

terms=(emulator1 emulator2 emulator3)
for t in ${terms[*]}
do
    if [ $(command -v $t) ]
    then
        detected_term=$t
        break
    fi
done
echo $detected_term
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.