के रूप में नवंबर 2014 , के नवीनतम संस्करण startxwinउपयोग xinitCygwin / X सर्वर, जो वास्तव में कहा जाता है शुरू करने के लिए XWin.exe। प्रक्रिया कुछ इस प्रकार है:
- आप कॉल करें
startxwin
startxwinएक नई .Xauthorityफ़ाइल बनाता है और एक कहा जाता है .serverauth.1234(जहाँ 1234आप हर बार एक्स शुरू करने पर बदलते हैं)
startxwin कुछ क्लाइंट और सर्वर पैरामीटर सेट करता है
startxwinxinitक्लाइंट और सर्वर मापदंडों के साथ कॉल करता है , जिसमें कुछ वैकल्पिक शेल स्क्रिप्ट और ऑर्टिकल फ़ाइल का संदर्भ भी शामिल है।
xinit कुछ आरसी स्क्रिप्ट को चलाने वाला, एक्स सर्वर शुरू करता है
xinitक्लाइंट (आमतौर पर xterm) या क्लाइंट आरसी स्क्रिप्ट शुरू करता है। हम इससे बचना चाहते हैं
- जब आप क्लाइंट या क्लाइंट आरसी स्क्रिप्ट खत्म करते हैं,
xinitतो एक्स सर्वर को बंद कर देता है। यदि हम चरण 6 से बचते हैं, तो हमें भी इससे बचने की आवश्यकता है
XWin.exeआसपास के कार्यों startxwinऔर xinitप्रदर्शन के बिना, सीधे बैश लॉगिन शेल के भीतर से चलाना संभव है । इसका मुख्य लाभ यह है कि यह व्यवहार करता है जैसे हम चाहते हैं: एक्स सर्वर शुरू होता है और चालू रहता है। दुर्भाग्य से, चूंकि .Xauthorityस्टार्टअप के दौरान कोई फ़ाइल पास नहीं हुई है , आपका एक्स सर्वर इसे कनेक्ट करने के लिए किसी भी स्थानीय प्रक्रिया की अनुमति देगा, जो असुरक्षित है।
सौभाग्य से यह xinitऐसा सामान है जो हम नहीं चाहते हैं। एक त्वरित हैक है जो बायपास करता है xinitलेकिन उस के शेष तत्व startxwinसर्वर से संबंधित हैं।
TL; DR: में startxwin, नीचे की ओर एक रेखा है जो पढ़ता है:
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
उस पंक्ति को इसमें बदलें:
eval \"$server\" $display $serverargs
अब से, startxwinस्क्रिप्ट कॉल XWin.exeकरने के बजाय सीधे कॉल करेगी xinit। जाहिर है कि यह किसी भी ग्राहक आरसी स्क्रिप्ट को निष्क्रिय कर देगा, लेकिन हम उन लोगों को पहले स्थान पर नहीं चाहते थे। इसका मतलब यह भी है कि इसे जीवित रखने के लिए क्लाइंट प्रक्रिया की आवश्यकता के बिना एक्स जारी रहेगा (यानी xinitइसे मारने से बचना)।
exec sleep infinityजैसा कि यहाँ दिखाया गया है: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exit