$ DISPLAY पर्यावरण चर क्या है?


74

मैं शेल स्क्रिप्टिंग में नया हूं। मुझे समझ नहीं आता कि $DISPLAYपर्यावरण चर क्या है।

मेरे पास Ubuntu 13.10 है और मैं /bin/bashशेल का उपयोग करता हूं । मेरे पास दो मॉनिटर हैं।

प्रशन:

  1. कमांड मेरी मशीन (दोनों मॉनीटर पर) echo $DISPLAYप्रिंट करेगा :0.0। इसका क्या मतलब है?

  2. किन मामलों में $DISPLAYचर रिक्त या NULL होगा?

  3. क्या इस पर कोई लेख या ट्यूटोरियल हैं?


आज echo $DISPLAYप्रिटिंग :0नहीं है:0.0
चंद्रेय जीके

चेक करें यह रिक्त या त्रुटियों के मामले में मदद करेगा: askubuntu.com/questions/432610/…
Maythux

जवाबों:


86

X विंडो सिस्टम में मैजिक शब्द DISPLAY है। एक प्रदर्शन में (सरलीकृत) शामिल हैं:

  • कुंजीपटल,
  • एक माउस
  • और एक स्क्रीन।

एक प्रदर्शन एक सर्वर प्रोग्राम द्वारा प्रबंधित किया जाता है, जिसे एक्स सर्वर के रूप में जाना जाता है। सर्वर अन्य कार्यक्रमों को प्रदर्शित करने की क्षमता प्रदर्शित करता है जो इससे जुड़ते हैं।

दूरस्थ सर्वर को पता है कि उसे DISPLAY पर्यावरण चर की परिभाषा के माध्यम से X नेटवर्क ट्रैफ़िक को कहाँ पर पुनर्निर्देशित करना है जो आम तौर पर आपके स्थानीय कंप्यूटर पर स्थित X प्रदर्शन सर्वर को इंगित करता है।

प्रदर्शन पर्यावरण चर का मान है:

hostname:D.S

कहाँ पे:

होस्टनाम उस कंप्यूटर का नाम है जहां एक्स सर्वर चलता है। एक होस्ट किए गए होस्टनाम का अर्थ है लोकलहोस्ट।

डी एक अनुक्रम संख्या है (आमतौर पर 0)। यदि एक कंप्यूटर से जुड़े कई डिस्प्ले हैं तो यह विविध हो सकता है।

एस स्क्रीन नंबर है। एक डिस्प्ले में वास्तव में कई स्क्रीन हो सकते हैं। आमतौर पर केवल एक स्क्रीन होती है, जहां 0 डिफ़ॉल्ट होता है।

मूल्यों का उदाहरण

localhost:4
google.com:0
:0.0

hostname:D.Sस्क्रीन स्क्रीन का मतलब होस्ट के नाम पर होस्टनाम; इस प्रदर्शन के लिए X सर्वर TCP पोर्ट 6000 + D पर सुन रहा है।

host/unix:D.Sस्क्रीन स्क्रीन का मतलब मेजबान के प्रदर्शन डी; इस प्रदर्शन के लिए X सर्वर UNIX डोमेन सॉकेट /tmp/.X11-unix/XD पर सुन रहा है (इसलिए यह केवल होस्ट से उपलब्ध है)।

:D.S होस्ट / यूनिक्स के बराबर है: डीएस, जहां होस्ट स्थानीय होस्टनाम है।

: 0.0 का मतलब है कि हम आपके स्थानीय होस्ट में आपके पहले डिस्प्ले से जुड़ी पहली स्क्रीन के बारे में बात कर रहे हैं

यहाँ और यहाँ और यहाँ और अधिक पढ़ें ।

X (7) मैन पेज से:

उपयोगकर्ता के दृष्टिकोण से, हर एक्स सर्वर में फॉर्म का प्रदर्शन नाम होता है:

होस्टनाम: displaynumber.screennumber

यह जानकारी एप्लिकेशन द्वारा यह निर्धारित करने के लिए उपयोग की जाती है कि इसे सर्वर से कैसे कनेक्ट होना चाहिए और इसे किस स्क्रीन पर डिफ़ॉल्ट रूप से उपयोग करना चाहिए (कई मॉनिटरों के साथ प्रदर्शित होता है):

होस्टनाम होस्टनाम उस मशीन का नाम निर्दिष्ट करता है जिससे प्रदर्शन शारीरिक रूप से जुड़ा हुआ है। यदि होस्टनाम नहीं दिया गया है, तो उसी मशीन पर एक सर्वर से संचार करने का सबसे कुशल तरीका उपयोग किया जाएगा। displaynumber वाक्यांश "प्रदर्शन" आमतौर पर मॉनिटर के संग्रह को संदर्भित करने के लिए उपयोग किया जाता है जो एक सामान्य कीबोर्ड और पॉइंटर (माउस, टैबलेट, आदि) को साझा करते हैं। अधिकांश वर्कस्टेशन में केवल एक कीबोर्ड होता है, और इसलिए, केवल एक डिस्प्ले होता है। बड़े, बहु-उपयोगकर्ता सिस्टम, हालांकि, अक्सर कई डिस्प्ले होते हैं ताकि एक से अधिक व्यक्ति एक ही बार में ग्राफिक्स का काम कर सकें। भ्रम से बचने के लिए, मशीन पर प्रत्येक डिस्प्ले को एक डिस्प्ले नंबर सौंपा जाता है (शुरुआत में 0) जब उस डिस्प्ले के लिए एक्स सर्वर शुरू होता है। डिस्प्ले नंबर हमेशा डिस्प्ले नाम में दिया जाना चाहिए। स्क्रीननंबर कुछ डिस्प्ले एकल कीबोर्ड और पॉइंटर को दो या अधिक मॉनिटरों के बीच साझा करते हैं। चूंकि प्रत्येक मॉनिटर में खिड़कियों का अपना सेट होता है, इसलिए प्रत्येक स्क्रीन को एक स्क्रीन नंबर (शुरुआत में 0) सौंपा जाता है, जब उस प्रदर्शन के लिए एक्स सर्वर शुरू होता है। यदि स्क्रीन नंबर नहीं दिया गया है, तो स्क्रीन 0 का उपयोग किया जाएगा।


जब यह $ DISPLAY शून्य या BLANK होगा।
चंद्रय्या जीके

सामान्य तौर पर ऐसा तब तक नहीं होना चाहिए जब तक आपके डिस्प्ले में कोई समस्या न हो .. ज्यादातर आपके डिस्प्ले मैनेजर के पुनरारंभ होने से समस्या का समाधान हो जाएगा। लेकिन यह एक डिफ़ॉल्ट क्रिया नहीं है।
मेथॉक्स


@ChandrayyaGK उदाहरण के लिए, जब मैं गनोम या केडीई जैसे किसी भी डेस्कटॉप वातावरण का उपयोग नहीं कर रहा हूं, लेकिन सीधे TTY (जैसे /dev/tty1) के साथ लॉग इन करता हूं, तो मुझे रिक्त मिला $DISPLAY
फ्रैंकलिन यू

@Maythux कभी-कभी स्क्रीन नंबर छोड़ा जा रहा है जब 0. मेरा GNOME देता :0है $DISPLAY
फ्रैंकलिन यू

10

मौजूदा उत्तर व्यापक चित्र को संबोधित करने में विफल होते हैं।

यदि आप एक ग्राफिकल वातावरण का उपयोग नहीं कर रहे हैं (अर्थात आप सिस्टम कंसोल में बिना किसी विंडो आदि के लॉग इन कर रहे हैं, या आप SSH या इसके समान टेक्स्ट-ओनली टर्मिनल से दूरस्थ रूप से लॉग इन कर रहे हैं, जैसे कि विंडोज कंप्यूटर से PuTTY चल रहा है तो कोई GUI शामिल नहीं है, और DISPLAYआमतौर पर परेशान नहीं होगा। कंप्यूटर के साथ संचार करने का आपका एकमात्र साधन कमांड लाइन है (हालांकि अगर आप जानते हैं कि जीयूआई सत्र में धुरी के तरीके हो सकते हैं)।

यदि आप एक ग्राफिकल इंटरफ़ेस (उबंटू पर, आमतौर पर जीडीएम अभिवादक का उपयोग किया जाता है) के साथ कंसोल पर लॉग इन कर रहे हैं) या ग्राफिकल टर्मिनल का उपयोग कर रहे हैं (जैसे कि विंडोज कंप्यूटर से चलने वाला eXceed या mobaX, या VNC क्लाइंट की तरह रिमोट डेस्कटॉप सॉफ़्टवेयर) DISPLAYवैरिएबल को प्रोग्राम द्वारा सेट किया जाता है जो ग्राफिकल क्लाइंट को इंगित करने के लिए आपके ग्राफिकल सेशन का प्रबंधन करता है जिसे मैं कनेक्ट करने के लिए I / O डिवाइस करता हूं।

परंपरागत रूप से, उबंटू कंप्यूटर पर GUI X.org, एक X11 कार्यान्वयन चला रहा था, हालांकि हाल ही में, मीर नामक एक आधुनिक प्रतिस्थापन को Canonical द्वारा पेश किया गया था; और इससे भी अधिक हाल ही में, मेरा मानना ​​है कि मीर को एक अन्य परियोजना के पक्ष में छोड़ दिया जाएगा , जिसमें मोटे तौर पर इसी तरह के लक्ष्य होंगे, जिसे वेलैंड कहा जाता है । इन प्रतिस्थापनों का उद्देश्य एक पूर्ण X11 स्टैक की जटिलता को कम करना है, जिसे हम यहां नहीं करेंगे - वे एक ही DISPLAYसम्मेलन का पालन करते हैं , जो कि हम यहां चर्चा कर रहे हैं।

X11 पर, होस्ट का हिस्सा DISPLAYएक दूरस्थ सर्वर हो सकता है, और आप अपने उबंटू कंप्यूटर का उपयोग उस दूरस्थ सर्वर पर फ़ाइलों और कार्यक्रमों तक पहुंचने के लिए "ग्राफ़िकल टर्मिनल" के रूप में करेंगे (जिस स्थिति में आपका कंप्यूटर "सर्वर" है जो कीबोर्ड का काम करता है एक माउस, और दूरस्थ या सर्वर पर चल रहे "क्लाइंट" प्रोग्राम के लिए एक या अधिक डिस्प्ले डिवाइस। आमतौर पर, X11 (या मीर, या वेलैंड) सर्वर और क्लाइंट प्रोग्राम (एक डेस्कटॉप मैनेजर और विभिन्न ग्राफिकल क्लाइंट जैसे कि वेब ब्राउजर, ईमेल क्लाइंट, कैलेंडर प्रोग्राम आदि) सभी आपके कंप्यूटर पर चलते हैं। यह DISPLAYमूल्य के "सर्वर" भाग द्वारा इंगित किया गया है , जो बाद के मामले में आमतौर पर खाली होता है (जिसका अर्थ है डिफ़ॉल्ट मान localhost)।

X11 सर्वर एक या अधिक ग्राफ़िकल सत्र चला सकता है - उदाहरण के लिए, आपका कंसोल लॉगिन और एक दूरस्थ VNC सत्र एक ही समय में चल सकता है। इस स्थिति में (यदि वे उसी X11 सर्वर उदाहरण द्वारा प्रबंधित होते हैं) तो आपके पास X11 शब्दों में एक से अधिक "डिस्प्ले" हैं। व्यवहार में, X11 में एक सत्र (एक लॉगिन घटना और इससे उत्पन्न डेस्कटॉप उदाहरण) एक प्रदर्शन है।

इस तरह के एक डिस्प्ले में एक या अधिक स्क्रीन हो सकते हैं। परंपरागत रूप से, इसका मतलब एक मॉनिटर था, हालांकि मूल आर्किटेक्चर में कुछ दुर्भाग्यपूर्ण लक्षण थे जैसे कि एक स्क्रीन से दूसरी स्क्रीन पर खिड़की ले जाने में असमर्थता। शिनरामा और ज़्राँडर जैसे ऐड-ऑन ने स्थिति को उस स्थिति तक आगे बढ़ाया, जहां एक स्क्रीन अक्सर कई तरीकों से कई मॉनिटरों को जोड़ती है।

यदि आपने कई-मॉनीटर सिस्टम के साथ खेला है, तो आपको शायद पता चला है कि आप विभिन्न तरीकों से मॉनिटर की व्यवस्था कर सकते हैं और एक आयताकार क्षेत्र के साथ समाप्त हो सकते हैं जहां आपके मॉनिटर इसके कुछ हिस्सों को प्रदर्शित करते हैं और अन्य भागों को किसी भी मॉनिटर को सौंपा नहीं जाता है। यह "स्क्रीन" है जिसे X11 बनाता है, और यदि आपके पास एक से अधिक डिस्प्ले कार्ड हैं, तो आपके पास इनमें से कई स्क्रीन हो सकते हैं, प्रत्येक को एक या एक से अधिक मॉनिटर को सौंपा जा सकता है (या सिद्धांत रूप में, मॉनिटर के बिना चल रहा है; Xvfb यह अनुमति देने के लिए इसका शोषण करता है। आप किसी भी मॉनिटर के बिना X11 चलाने के लिए, बस जो भी उद्देश्य के लिए एक स्मृति क्षेत्र के लिए GUI मैपिंग)।


मीर को वास्तव में एकता के साथ छोड़ दिया गया है। लंबे समय तक gdm के बजाय lightdm डिफ़ॉल्ट था, लेकिन हो सकता है कि आपके उत्तर का वह भाग फिर से सही हो गया हो जैसा कि Unity की चढ़ाई से पहले था! मैं मेट का उपयोग करता हूं, इसलिए मैं तुच्छता से जांच नहीं कर सकता ...
Zanna

मैं कंसोल (विंडोज़ के बिना) से लिनक्स चला रहा था और जो सब कुछ समझाता है। वास्तव में समझ में आता है: पी
जीन-फ्रेंकोइस टी।

3

से https://help.ubuntu.com/community/EnvironmentVariables :

चर- प्रदर्शन

मान उदाहरण:

:0.0
localhost:10.0
terminal01:0.0

इसके लिए क्या है?

इस चर का उपयोग चित्रमय अनुप्रयोगों को इंगित करने के लिए किया जाता है जहां वास्तविक चित्रमय उपयोगकर्ता इंटरफ़ेस प्रदर्शित करने के लिए, मान में 3 भाग होते हैं: एक मेजबान-नाम के बाद एक कोलोन (:), एक प्रदर्शन संख्या जिसके बाद एक डॉट (।) और एक स्क्रीन होता है। नंबर।

होस्ट-नाम भाग का उपयोग नेटवर्क पर रिमोट मशीन को भेजे जाने वाले ग्राफिकल आउटपुट के लिए किया जा सकता है। यह तब छोड़ा जा सकता है जब आउटपुट स्थानीय मशीन पर चल रहे एक्स सर्वर के लिए होता है। प्रदर्शन संख्या एक ही मशीन पर चलने वाले कई एक्स सर्वर के बीच चयन करने की अनुमति देती है (उबंटू कई एक्स सर्वर का उपयोग करता है ताकि कई ग्राफिकल डेस्कटॉप सत्रों को सक्षम किया जा सके)।

यद्यपि स्क्रीन नंबर का उपयोग कई भौतिक स्क्रीन के बीच चयन करने के लिए किया जाता है जो एक ही एक्स सर्वर द्वारा प्रबंधित होते हैं, यह आजकल शायद ही "0" के अलावा किसी अन्य चीज़ के लिए सेट है। "डिसप्ले" पर्यावरण चर के मान को मैन्युअल रूप से सेट करने की आवश्यकता शायद ही कभी होती है क्योंकि यह जरूरत पड़ने पर "जीडीएम" और "एसएसएच" जैसे कई अनुप्रयोगों द्वारा स्वचालित रूप से और समझदारी से समायोजित किया जा सकता है।


3

इको $ प्रदर्शन प्रिंट करेगा: मेरी मशीन पर 0.0 (दोनों मॉनिटर पर)। इसका क्या मतलब है?

: 0.0 का मतलब डिस्प्ले नंबर 0 और स्क्रीन नंबर 0 है

किस स्थिति में $ DISPLAY रिक्त या NULL होगा?

आपके $ प्रदर्शन में त्रुटि के मामले में और यह सामान्य रूप से नहीं होता है

क्या इस पर कोई लेख या ट्यूटोरियल हैं?

कुछ ट्यूटोरियल और संसाधन यहां देखे जा सकते हैं:

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