जब मैं वर्चुअल कंसोल बनाम एक्सटरम में हूं तो मेरी स्क्रिप्ट कैसे जान सकती है?


11

मेरी कुछ स्क्रिप्ट्स (कीमैप बदलना, सार्वजनिक कुंजी जोड़ना) को एक वर्चुअल कंसोल में बनाम एक एक्सटरम में अलग तरीके से कार्य करने की आवश्यकता होती है। के लिए असली कोड क्या है

#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi

जवाबों:


6

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

कुछ इस तरह:

if [ -n "$DISPLAY" ]; then
  : X
else
  : no X
fi

1
मैं स्टैटेक्सचेंज पर तीन सही उत्तर देने की स्थिति में कभी नहीं रहा।
जॉन बैबर-लुसेरो

9

यदि आप गैर-सक्रिय गोले से इंटरएक्टिव को अलग करना चाहते हैं, तो इसका testपता लगाने के लिए इनबिल्ट सपोर्ट का उपयोग करें (यह सुनिश्चित नहीं है कि ksh के पास यह है, लेकिन कोरुटिल्स से बाइनरी भी इसका समर्थन करता है):

test -t 0 # will return 0 for interactive shells

यदि आप वास्तव में मतलब है कि क्या आप एक tty / pty / pts या कुछ और पर हैं, से आउटपुट पार्स करें tty:

$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2

मैं स्टैटेक्सचेंज पर तीन सही उत्तर देने की स्थिति में कभी नहीं रहा।
जॉन बैबर-लुसेरो

7

यह ऑपरेटिंग सिस्टम पर निर्भर करेगा। लिनक्स के लिए, आप ऐसा कर सकते हैं:

#!/bin/ksh

if [ "$TERM" == "linux" ]; then
  echo "I'm in a virtual console"
else
  echo "I'm not in a virtual console"
fi

यह, निश्चित रूप से, मानता है कि आपने TERMपर्यावरण चर को स्वयं नहीं बदला है , जो स्वचालित रूप से linuxकेवल तभी सेट होता है जब आप वर्चुअल कंसोल में प्रवेश करते हैं (उबंटू के तहत यह xtermकंसोल अनुप्रयोगों में सेट होता है, लेकिन यह ओएस के बीच भिन्न हो सकता है)। आपके द्वारा उपयोग किए जा रहे विभिन्न अनुप्रयोगों में TERM की सामग्री की जाँच करें, और उपयुक्त सेट करें।


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