2012-01-20 11 views
5

में विंडोज उपयोगकर्ता के पर्यावरण चर को रीफ्रेश करें मैं एक सेटक्स VARNAME VARVALUE (विशेष रूप से पथ) करने के बाद साइगविन्स पर्यावरण को रीफ्रेश करना चाहता हूं।साइगविन

'निर्यात VARNAME = VARVALLUE' एक विकल्प नहीं है क्योंकि यदि यह पथ है (प्रारूप के रूप में यूनिक्स के लिए) तो मुझे निर्यात मूल्य को बदलने की आवश्यकता होगी, लेकिन VARNAME पथ हो सकता है या नहीं।

मैं सेटक्स को चलाने के लिए और फिर पर्यावरण को रीफ्रेश करना चाहता हूं, इसलिए यदि VARNAME पाथ है तो सिग्विन संबंधित परिवर्तनों को निष्पादित करता है।

+0

अंत में मैं इसे का उपयोग किया: ** निर्यात $ {var_name} = "' reg क्वेरी HKCU \\ पर्यावरण/वी $ {var_name} | ग्रेप $ {var_name} | -c23- कटौती | cygpath -pu '"; ** यह साफ़ नहीं है लेकिन यह ज्यादातर मामलों में काम करता है। यदि VARVALUE पथ नहीं है, तो साइगपाथ इसे तब तक अपरिवर्तित छोड़ देगा जब तक कि यह पथ की तरह न हो, लेकिन इसे बदला नहीं जाना चाहिए, उस स्थिति में यह सब कुछ गड़बड़ कर देगा लेकिन यह एक सामान्य स्थिति नहीं है – aitorpazos

उत्तर

3

अपिमैन के उत्तर पर निर्माण करने के लिए, सामान्य रूप से आपको HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment में पाथ मिलेगा, जिसमें उपयोगकर्ता के पथ के बजाय सिस्टम पाथ शामिल है। मैंने नीचे कुछ सुधार भी किए हैं। (Var_name बदलकर या अन्य वातावरण चर) विंडोज सिस्टम पथ लोड करने के लिए cygwin वातावरण में

भागो इस

export var_name="PATH" 
export $var_name="$(cygpath -pu "`reg query 'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' /v $var_name | grep $var_name | cut -c23-`")" 
, ऊपर कोड के साथ बेशक

, खिड़कियां पथ स्थानीय पथ का स्थान ले लेगा, जिससे आप साइगविन/बिन और दूसरों तक पहुंच खो देते हैं। इसके बजाय, आप शायद cygwin पथ करने के लिए Windows पथ संलग्न करना चाहते हैं:

export PATH="$PATH:$(cygpath -pu "`reg query 'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' /v PATH| grep PATH | cut -c23-`")" 
+0

'कट' मेरे लिए काम नहीं करता है। मेरे विन 7 में, 'असली पथ' से पहले 30 वर्ण हैं। मैंने इसके बजाय '' 'निर्यात PATH =" $ पाथ: $ (cygpath -pu "' reg query 'HKLM \ SYSTEM \ CurrentControlSet \ Control \ सत्र प्रबंधक \ पर्यावरण' /v पाथ | grep pATH | sed's s | \ + | | जी '| कट-डी "" -एफ 4-'") "' '' – Sungam

0

जोड़ा टिप्पणी ऊपर, लेकिन स्वरूपण अच्छा नहीं है। यहां दोबारा पोस्ट करें।

cut @nilbus के उत्तर में मेरे लिए काम नहीं करता है। मेरे विन 7 में, real Path से पहले 30 वर्ण हैं। मैं प्रयोग किया जाता है इस के बजाय

export PATH="$PATH:$(cygpath -pu "`reg query \ 
'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' \ 
/v PATH|grep PATH|sed 's| \+| |g'|cut -d" " -f4-`")" 
संबंधित मुद्दे