मैं किस टर्मिनल प्रकार का उपयोग कर रहा हूं?


51

मैंने इसे Ubuntu 12.04 और डेबियन 7. जब मैंने किया है, दोनों के साथ परीक्षण किया है

echo $TERM

मुझे मिला

xterm

लेकिन अगर मैं ड्रॉपडाउन मेनू "मदद"> "के बारे में" का उपयोग करता हूं तो यह कहता है gnome terminal 3.4.1.1

क्या इसका मतलब है कि मैं सिर्फ सूक्ति-टर्मिनल का उपयोग कर रहा हूं? या सिर्फ xterm? या सूक्ति-टर्मिनल xterm का विस्तार है? मैं उलझन में हूं।

जवाबों:


49

किस $TERMलिए है?

$TERMचर कि टर्मिनल की क्षमताओं का लाभ लेने के एप्लिकेशन द्वारा उपयोग के लिए है।

उदाहरण के लिए, यदि कोई प्रोग्राम रंगीन टेक्स्ट प्रदर्शित करना चाहता है, तो उसे पहले यह पता लगाना चाहिए कि क्या टर्मिनल आप रंगीन टेक्स्ट का समर्थन कर रहे हैं, और यदि वह करता है, तो रंगीन टेक्स्ट कैसे करें।

जिस तरह से यह काम करता है कि सिस्टम ज्ञात टर्मिनलों और उनकी क्षमताओं का एक पुस्तकालय रखता है। अधिकांश प्रणालियों में यह है /usr/share/terminfo(वहाँ भी समाप्त हो गया है, लेकिन यह विरासत किसी भी अधिक इस्तेमाल नहीं किया गया है)।

तो मान लें कि आपके पास एक प्रोग्राम है जो लाल पाठ प्रदर्शित करना चाहता है। यह मूल रूप से टर्मोफ़ लाइब्रेरी को एक कॉल करता है जो कहता है " मुझे बाइट्स का अनुक्रम दें जो मुझे xterm टर्मिनल के लिए लाल पाठ के लिए भेजना है "। फिर यह सिर्फ उन बाइट्स को लेता है और उन्हें प्रिंट करता है।
आप ऐसा करके खुद को आजमा सकते हैं tput setf 4; echo hi। यह setfटर्मोफ़ की क्षमता प्राप्त करेगा और इसे एक पैरामीटर पास करेगा 4, जो कि आपके इच्छित रंग है।


सूक्ति टर्मिनल अपने बारे में क्यों है:

अब आपको बताएंगे कि आपके पास कुछ चमकदार नए टर्मिनल एमुलेटर हैं जो अभी जारी किए गए थे, और सिस्टम के टर्मऑफ़ लाइब्रेरी की अभी इसके लिए कोई परिभाषा नहीं है। जब आपका आवेदन कुछ करने के तरीके को देखने के लिए जाता है, तो यह विफल हो जाएगा क्योंकि टर्मिनल ज्ञात नहीं है।

जिस तरह से आपके टर्मिनल के चारों ओर हो जाता है वह झूठ बोलने के बारे में है कि यह कौन है। तो आपका सूक्ति टर्मिनल कह रहा है " मैं xterm हूँ "।

Xterm एक बहुत ही बुनियादी टर्मिनल है जो X11 की सुबह से आस-पास है, और इस तरह अधिकांश टर्मिनल एमुलेटर जो इसका समर्थन करते हैं। तो सूक्ति टर्मिनल ने कहा कि यह एक xterm है, यह टर्मोफ़ लाइब्रेरी में एक परिभाषा होने की अधिक संभावना है।

आपके टर्मिनल प्रकार के बारे में झूठ बोलने की स्थिति यह है कि टर्मिनल वास्तव में xterm करता है (उदाहरण के लिए, कई नए टर्मिनल 256 रंगों का समर्थन करते हैं, जबकि पुराने टर्मिनल केवल 16 का समर्थन करते हैं)। तो आपके पास एक ट्रेडऑफ़ है, अधिक सुविधाएँ प्राप्त करें, या अधिक संगतता है। अधिकांश टर्मिनल अधिक अनुकूलता का विकल्प चुनेंगे, और इस प्रकार खुद को विज्ञापन के रूप में चुनेंगे xterm

यदि आप इसे ओवरराइड करना चाहते हैं, तो कई टर्मिनल व्यवहार को कॉन्फ़िगर करने का कोई तरीका प्रदान करेंगे। लेकिन आप भी बस कर सकते हैं export TERM=gnome-terminal


4
किसी को निर्यात करने की सिफारिश करना $ TERM वास्तव में एक खुले घाव में नमक को रगड़ने जैसा लगता है ...
jasonwryan

1
हाँ। मुझे लग रहा है कि सूक्ति-टर्मिनल के डेवलपर्स ने एक अच्छे कारण के लिए $TERMसेट कर दिया हैxterm
mulllhausen

4
@mulllhausen इस कारण को मेरे उत्तर में अच्छी तरह से समझाया गया है ...
पैट्रिक

27

TERMवातावरण चर टर्मिनल इंगित करता है प्रकार , नहीं टर्मिनल आवेदनTERMइसका एक विशिष्ट उद्देश्य है: यह उस टर्मिनल में चल रहे अनुप्रयोगों को बताता है कि टर्मिनल के साथ कैसे बातचीत करें।

अनुप्रयोग एस्केप सीक्वेंस लिखकर टर्मिनलों के साथ बातचीत करते हैं - ऐसे वर्णों के अनुक्रम जिनमें गैर-अक्षर वाले अक्षर शामिल होते हैं और उन पर प्रभाव पड़ता है जैसे कर्सर को हिलाना, स्क्रीन के हिस्से को मिटाना, वर्तमान रंग बदलना, आदि। पुराने दिनों में, भौतिक टर्मिनलों के विभिन्न ब्रांड अलग थे। भागने के दृश्यों के सेट। इसलिए ऑपरेटिंग सिस्टम टर्मिनल प्रकार और उनकी विशेषताओं का एक डेटाबेस रखता है। पारंपरिक डेटाबेस है termcap ( "टर्मिनल क्षमताओं"); कई आधुनिक प्रणालियों और अनुप्रयोगों को टर्मोफ में बदल दिया गया है । दोनों डेटाबेस को टर्मिनल प्रकार के नाम से अनुक्रमित किया जाता है, और अनुप्रयोग उन्हें TERMपर्यावरण चर से टर्मिनल प्रकार के नाम का उपयोग करके क्वेरी करते हैं ।

आजकल, अधिकांश टर्मिनल एक्सटेंशन के कुछ सामान्य सेटों के साथ एस्केप सीक्वेंस के एक मानक सेट का उपयोग करते हैं , इसलिए आपको कई भिन्न मान दिखाई नहीं देंगे TERM। अधिकांश GUI टर्मिनल एमुलेटर , Xterm , पारंपरिक X टर्मिनल (जो अभी भी उपयोग किया जाता है और बनाए रखा जाता है) के साथ संगत है ।

टर्मिनल एमुलेटर जो xterm से भिन्न होते हैं, अपने स्वयं के नाम के तहत टर्मिनल डेटाबेस में अपनी प्रविष्टि जोड़ सकते हैं। हालाँकि यह दूरस्थ गोले के साथ अच्छी तरह से जाल नहीं है। मशीन A पर चलने वाला प्रोग्राम लेकिन जो मशीन B पर प्रदर्शित हो रहा है, उदाहरण के लिए क्योंकि इसे B से A से s के माध्यम से लॉन्च किया गया था, मशीन A पर टर्मिनल डेटाबेस को क्वेरी करने की आवश्यकता है। दूरस्थ लॉगिन विधियाँ जैसे ssh TERMपर्यावरण चर पर ले जाती हैं , लेकिन यह तभी मददगार होता है जब B का टर्मिनल डेटाबेस भी A. पर वैल्यू यूजर के लिए एंट्री करता है। इसलिए कई टर्मिनल एमुलेटर चिपक जाते हैं, TERM=xtermजो कि बहुत अधिक सार्वभौमिक ज्ञात होते हैं।

टर्मिनलों के बीच का अंतर उनके द्वारा बातचीत करने के तरीके से नहीं आता है, बल्कि जिस तरह से टर्मिनल उपयोगकर्ता के साथ बातचीत करते हैं और उनके वातावरण में फिट होते हैं। उदाहरण के लिए, गनोम टर्मिनल गनोम पर अच्छा लगता है और टैब और अन्य बारीकियों को प्रदान करता है; कॉनसोल केडीई पर अच्छा लगता है और टैब और अन्य बारीकियों को प्रदान करता है; urxvt की एक छोटी मेमोरी आवश्यकता है; Console2 विंडोज पर चलता है; स्क्रीन और tmux सत्र प्रदान करते हैं जो विभिन्न मूल टर्मिनलों से जुड़े हो सकते हैं; और इसी तरह। चूंकि इन सुविधाओं में से कोई भी टर्मिनल में चल रहे अनुप्रयोगों के लिए भिन्न नहीं है, इसलिए अधिकांश टर्मिनल एमुलेटर का उपयोग करते हैं TERM=xterm

यह जानने के लिए कि शेल किस टर्मिनल को चला रहा है, शेल के अभिभावक को देखें:

ps -p$PPID

रनिंग ps -p$PPIDमुझे यह नहीं बताती है कि मैं किस टर्मिनल पर चल रहा हूं। या कम से कम एक तरह से मुझे समझ में नहीं आता। क्या आपके पास एक उदाहरण आउटपुट / प्रतिक्रिया है?
user3731622

@user आउटपुट संख्याओं और क्रिप्टिक संक्षिप्तीकरण का एक समूह है, जिसके बाद एक कमांड लाइन है। अधिकांश परिस्थितियों में, कमांड लाइन वह है जिसने टर्मिनल एमुलेटर शुरू किया है जिसमें शेल चल रहा है।
गाइल्स का SO- बुराई होना बंद करो '

12

पर्यावरण चर TERM का मतलब वह टर्मिनल नहीं है जिसका आप उपयोग कर रहे हैं।

कोटेशन gnu.org :

पर्यावरण चर TERM में पाठ विंडो की क्षमताओं के लिए एक पहचानकर्ता होता है। आप संदर्भ के रूप में 'मैन 5 टर्मिफ़' का उपयोग करके,> 'इनफोकम्प' कमांड का उपयोग करके इन क्षमताओं की विस्तृत सूची प्राप्त कर सकते हैं।

एम्बेडेड रंग निर्देशों के साथ पाठ का निर्माण करते समय, संदेशक TERM चर को देखता है। पाठ खिड़कियां आज आम तौर पर कम से कम 8 रंगों का समर्थन करती हैं। अक्सर, हालांकि, पाठ विंडो 16 या अधिक रंगों का समर्थन करती है, भले ही TERM चर केवल 8 समर्थित रंगों को दर्शाते हुए एक पहचानकर्ता के लिए सेट किया गया हो। यह इन मामलों में एक अलग मान के लिए TERM चर सेट करने के लायक हो सकता है:

xterm ज्यादातर मामलों में 16 रंगों के समर्थन के साथ बनाया गया है। यह 88 या 256 रंगों (लेकिन दोनों नहीं) के समर्थन के साथ भी बनाया जा सकता है। आप TERM को xterm-16color, xterm-88color, या xterm-256kor में सेट करने का प्रयास कर सकते हैं। rxvt

rxvt अक्सर 16 रंगों के समर्थन के साथ बनाया जाता है। आप TERM को rxvt-16color पर सेट करने का प्रयास कर सकते हैं। konsole

konsole भी अक्सर 16 रंगों के समर्थन के साथ बनाया गया है। आप TERM को konsole-16color या xterm-16color पर सेट करने का प्रयास कर सकते हैं।

TERM को सेट करने के बाद, आप 'msgcat --color = test' को इनवाइट करके यह सत्यापित कर सकते हैं कि यह आउटपुट उचित कलर मैप की तरह दिखता है या नहीं। पर्यावरण चर TERM में पाठ विंडो की क्षमताओं के लिए एक पहचानकर्ता होता है। आप संदर्भ के रूप में 'मैन 5 टर्मिफ़' का उपयोग करके 'इनफोकम्प' कमांड का उपयोग करके इन कैबिएबिलिटीज की विस्तृत सूची प्राप्त कर सकते हैं।

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