किसी प्रोग्राम को यह सोचकर ट्रिक कैसे करें कि कोई एक्स सर्वर चल रहा है


28

मेरा यह प्रोग्राम है जो टेक्स्ट यूजर इंटरफेस और ग्राफिकल यूजर इंटरफेस दोनों के साथ चल सकता है।

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

मैं इसे पाठ मोड में लागू करना चाहता हूं और इसे एक्स टर्मिनल के अंदर चलाया है। मैं इसे करने के बारे में कैसे जाऊँगा?

जवाबों:


40

आमतौर पर बस

unset DISPLAY

टर्मिनल के कमांड लाइन में। कुछ एप्लिकेशन इससे अधिक स्मार्ट होते हैं, और वास्तव में अनुमतियाँ और कंसोल के प्रकार बनाम स्यूडोटर्मिनल की जांच करते हैं।


7
दुर्भाग्य से, कुछ सच में बाधा सॉफ्टवेयर मान जाएगा DISPLAY=:0अगर यह परेशान है। मेरा मानना ​​है कि आप इसे एक अलग उपयोगकर्ता के तहत चलाकर और लूपबैक X11 को छोड़ने के लिए iptables का उपयोग करके ठीक कर सकते हैं, लेकिन यह बहुत सकल है।
केविन

2
@ केविन शायद DISPLAY=invalid:0?
sourcejedi

2
@PeterCordes या आप सबस्क्रिप्शन के envबजाय कमांड निष्पादित कर सकते हैं :env -u DISPLAY emacs foo.c
pabouk

2
@PeterCordes के emacsपास X के उपयोग को अक्षम करने के लिए कमांड लाइन का ध्वज है emacs -nw। बस प्रकार । लेकिन अगर ऐसा नहीं होता है, तो आप इसके बजाय उपयोग कर सकते हैं DISPLAY= emacs, जो काम भी करता है।
कैस्परड

2
DISPLAY=0.0.0.0:0नाम सर्वर लुकअप किए बिना तुरंत विफल हो जाता है।
अंक

31

यदि आप X को एकल कमांड के लिए अक्षम करना चाहते हैं, तो आप लिख सकते हैं

DISPLAY= ./my_command

सामरिक रिक्त स्थान के बाद सूचना दें =। अधिक आम तौर पर, आप <variable>=<value>रिक्त स्थान के अनुसार अनुक्रम के साथ अपनी कमांड को प्रीफ़िक्स करके एक प्रक्रिया के लिए पर्यावरण चर निर्धारित कर सकते हैं । चूंकि अंतरिक्ष विभाजक के रूप में कार्य करता है, इसके =तुरंत बाद एक स्थान पूर्ववर्ती चर को साफ करता है। हम इन उपसर्गों के प्रभाव को कमांड के रूप में एक उपधारा का उपयोग करके देख सकते हैं और फिर इसके वातावरण को प्रिंट कर सकते हैं। उदाहरण के लिए लें:

$ A=a B=b C= D=d sh
$ echo $A $B $C $D

यह छपेगा

a b d

इससे पता चलता है कि वास्तव में उद्देश्य के रूप में उपधारा का वातावरण अलग है। ध्यान दें कि खोल प्रतिस्थापन से पहले अलग-अलग तर्क को पास किया जाता होता है echo, इसलिए वहाँ के बीच केवल एक ही जगह है bऔर dउत्पादन में, बस के रूप में करता है, तो कमांड लाइन थे echo a b d(दो रिक्त स्थान के साथ)।

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