के रूप में नवंबर 2014 , के नवीनतम संस्करण startxwin
उपयोग xinit
Cygwin / X सर्वर, जो वास्तव में कहा जाता है शुरू करने के लिए XWin.exe
। प्रक्रिया कुछ इस प्रकार है:
- आप कॉल करें
startxwin
startxwin
एक नई .Xauthority
फ़ाइल बनाता है और एक कहा जाता है .serverauth.1234
(जहाँ 1234
आप हर बार एक्स शुरू करने पर बदलते हैं)
startxwin
कुछ क्लाइंट और सर्वर पैरामीटर सेट करता है
startxwin
xinit
क्लाइंट और सर्वर मापदंडों के साथ कॉल करता है , जिसमें कुछ वैकल्पिक शेल स्क्रिप्ट और ऑर्टिकल फ़ाइल का संदर्भ भी शामिल है।
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