bashrc: एक्स विंडो कैसे पता करें कि उपलब्ध है या नहीं?


10

मेरे हिस्से में एक हिस्सा है ~/.bashrc, जो $ EDITOR को gvim बनाता है। यह ठीक काम करता है जब मैं एक्स विंडो में हूं। हालाँकि, अगर मैं अपने वर्कस्टेशन (दूसरे वर्कस्टेशन से) के लिए ssh करता हूं, तो gvim को "ओपन डिस्प्ले नहीं हो सकता" शिकायत शुरू हो जाती है।

इसलिए मैं ifbashrc में एक कथन रखना चाहता हूं , कि यदि X विंडो उपलब्ध है, तो gvim का उपयोग करें, अन्यथा इसे vim होने दें।

मैं इसे कैसे हासिल कर सकता हूं?

जवाबों:


11

ऐसा करने का एक तरीका DISPLAY पर्यावरण चर के अस्तित्व का परीक्षण करता है:

if [ "$DISPLAY" ]
then
    EDITOR=gvim
else
    EDITOR=vim
fi

कुछ मामलों में, DISPLAY सेट हो जाएगा, भले ही आपका gvim X सर्वर से संपर्क करने में सक्षम न हो। उन मामलों में, RunXX प्रोग्राम का उपयोग करें :

if RunningX
then
    EDITOR=gvim
else
    EDITOR=vim
fi


7

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

तो आप इसका उपयोग कर सकते हैं:

if [ -n "$DISPLAY" ]; then
    alias vim='gvim'
else
    alias vim='vim'
fi

लेकिन एक और उपाय है। इसे ssh X अग्रेषण कहा जाता है।

Daud

ssh -X yourworkstation

फिर आप एक मशीन पर vim चला सकते हैं जिस पर आप ssh'd हैं, और यह उस मशीन पर प्रदर्शित होगा जहाँ आप X चला रहे हैं।


3

इसे अपने .bashrc में डालें:

if [ -z "${DISPLAY:-}" ]; then
  EDITOR='vim'
else
  EDITOR='gvim'
fi

1

हालांकि यह आपके प्रश्न का उत्तर नहीं है, मैंने सोचा कि शायद यह इंगित करना उपयोगी है कि यदि आप X * से दूसरे वर्कस्टेशन पर एक कार्य केंद्र से sshing कर रहे हैं, तो आप वास्तव में gvim का उपयोग कर सकते हैं यदि आप X को ssh के साथ अग्रेषित करते हैं। खिड़की की जानकारी बस नेटवर्क पर भेजी जाएगी और gvim बस पॉप अप होगा जैसे कि यह स्थानीय रूप से चलाया जाएगा।

निम्नलिखित को ~ / .ssh / config में जोड़ें

Host *
   ForwardX11 yes 

अब आप सिर्फ gvim चला पाएंगे।

यदि आप मूल के वर्कस्टेशन हैं विंडोज और एक्स नहीं चल रहा है, तो आप वास्तव में साइगविन का उपयोग करके स्थानीय रूप से एक्स सर्वर को स्टार्टअप कर सकते हैं। एक बार सेटअप करने के बाद, आप X11 फॉरवर्डिंग करने के लिए PuTTy जैसे लोकप्रिय ssh क्लाइंट को कॉन्फ़िगर कर सकते हैं, और फिर gvim पॉप-अप विंडो-डेकोरेटेड विंडो के रूप में दिखाई देगा।


0

बस एक पर्यावरण चर की जाँच करें जिसे Xorg स्टार्टअप पर सेट करता है, जैसे XLOCAL जिसमें वर्तमान X11 सत्र के बारे में जानकारी है।


0

मुझे गैरिंजोन का जवाब पसंद आया है कि वह RunX का उपयोग कर रहा है क्योंकि यह खराब लेकिन गैर-रिक्त DISPLAY चर के बारे में स्मार्ट है।

लेकिन .. मैं एक बेहतर जाना चाहूंगा। मैं अक्सर स्क्रीन सत्र का उपयोग करता हूं। मैं घर पर एक स्क्रीन सत्र शुरू कर सकता हूं, DISPLAY परिभाषित किया गया है। फिर, मैं कहीं और से ssh, DISPLAY अभी भी परिभाषित है और यह वास्तव में घर पर ... प्रदर्शित करता है! तो .. तो मैं '$ DISPLAY =' निर्यात करेगा। यह ठीक है, लेकिन जब से उस उत्तर के लिए पहले से जाँच की गई थी, और उस समय एक वैध प्रदर्शन चर पाया गया था। शुरू में EDITOR चलाए गए .ashashrc अभी भी gvim पर सेट किए जाएंगे।

मैं इसी तरह की समस्या के समाधान की तलाश में यहां आया था, मैं X-GUI मैनपेज ब्राउजिंग के लिए yelp का उपयोग करना चाहता था लेकिन X का उपयोग न करने पर स्वचालित रूप से पारंपरिक मैन कमांड को छोड़ देता हूं। यहां जो कुछ भी पढ़ा गया है, उसके आधार पर, मैं इसके साथ आया हूं:

man () {
    if RunningX
    then
        yelp "man:$@";
    else
        /usr/bin/man "$@";
    fi
}

मैं सोच रहा हूं कि EDITOR समस्या के लिए कोई व्यक्ति कुछ इस तरह कर सकता है:

EDITOR=vim
vim () {
    if RunningX
    then
        gvim "$@";
    else
        vim "$@";
    fi
}

मैं बस उस कहानी को w / o पोस्ट कर देता, लेकिन मैंने उसका परीक्षण नहीं किया। मैं खुद को बैश नवाबी मानता हूं। मैंने अपने 'मैन कमांड' का परीक्षण किया, जो काम करता है! मैं अपने संपादक के लिए emacs का उपयोग कर रहा हूं, हालांकि, यह X के लिए स्वयं का चेक है। मेरे पास gvim भी स्थापित नहीं है।

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