मेरी कुछ स्क्रिप्ट्स (कीमैप बदलना, सार्वजनिक कुंजी जोड़ना) को एक वर्चुअल कंसोल में बनाम एक एक्सटरम में अलग तरीके से कार्य करने की आवश्यकता होती है। के लिए असली कोड क्या है
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
मेरी कुछ स्क्रिप्ट्स (कीमैप बदलना, सार्वजनिक कुंजी जोड़ना) को एक वर्चुअल कंसोल में बनाम एक एक्सटरम में अलग तरीके से कार्य करने की आवश्यकता होती है। के लिए असली कोड क्या है
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
जवाबों:
यह मेरी तरह लगता है कि आप जांचना चाहते हैं कि कनेक्ट करने के लिए कोई एक्स सर्वर है या नहीं।
कुछ इस तरह:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
यदि आप गैर-सक्रिय गोले से इंटरएक्टिव को अलग करना चाहते हैं, तो इसका 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
यह ऑपरेटिंग सिस्टम पर निर्भर करेगा। लिनक्स के लिए, आप ऐसा कर सकते हैं:
#!/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 की सामग्री की जाँच करें, और उपयुक्त सेट करें।