Windows और Git Bash: BAT PATH को Windows% PATH% सिस्टम वैरिएबल पढ़ने के लिए


27

मैंने हाल ही में नियंत्रण कक्ष -> सिस्टम -> उन्नत सिस्टम सेटिंग्स -> पर्यावरण चर -> उपयोगकर्ता चर -> पथ में जाकर मैन्युअल रूप से विंडोज पथ में एक निर्देशिका जोड़ी है। (विंडोज 7, 64-बिट।)

Cmd.exe को रिबूट करने और शुरू करने के बाद, echo %PATH%यह इंगित करता है कि यह काम करता है: मैं उस निर्देशिका को देखता हूं जिसे मैंने हाल ही में आउटपुट में जोड़ा था।

हालाँकि, Git Bash शुरू करने के बाद, echo $PATHइस डायरेक्टरी में आउटपुट शामिल नहीं है।

मैं export PATH=$PATH:/c/my/pathअपने bashrc में जोड़ सकता हूं, लेकिन मैं Git Bash को केवल Windows से पाट दूंगा, इसलिए मुझे दो स्थानों पर पथ जोड़ने की याद नहीं है। इसे किस तरह पूर्ण कर सकते है?

(एक अधिक सामान्य संबंधित प्रश्न है, Git Bash की $ PATH क्या सेट करती है? मुझे विभिन्न स्थानों पर कुछ प्रविष्टियों को बार-बार देखा जाता है, कुछ चीजें जो विंडोज% PATH% में हैं, Git Bash की $ PATH में हैं। लेकिन अन्य सभी के लिए पहले क्या होता है।) मुझे GAT बैश प्रॉम्प्ट मिलता है जो $ PATH को छूता है? '


प्रश्न में पथ महत्वपूर्ण हो सकता है C:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin:।
अहमद फसीह

जवाबों:


6

एक msysit git bash सत्र स्क्रिप्ट का उपयोग करता है share/WinGit/Git Bash.vbs, जो पर्यावरण चर को एक्सेस या संशोधित नहीं करता है PATH(जैसे कि यह असंबंधित vbs स्क्रिप्ट में होगा, उदाहरण के लिए )

जीआईटी बैश सत्र आपके वर्तमान के सामने जोड़ देगा PATH:

.:/usr/local/bin:/mingw/bin:/bin:

यह संभव है कि msysgit के साथ पैक किया गया मिंगव सत्र binकिसी अन्य मिंगव इंस्टॉलेशन से विचार नहीं करेगा : आप इसे अपने लिए एक और (सरल) डायरेक्टरी सेट करके चेक कर सकते PATHहैं और देख सकते हैं कि यह अभी भी आपके गिट बैश सत्र में दिखाई दे रहा है या नहीं। यदि नहीं, तो यह एक अधिक सामान्य मुद्दा है जो सभी निर्देशिकाओं की चिंता करता है जिन्हें आप पेट में जोड़ देंगे।


1
यह सही प्रतीत नहीं होता है। जब मैं git bash शुरू करता हूं, तो इसका पथ कुछ प्रक्रिया द्वारा सेट किया जाता है जो स्पष्ट रूप से कुछ प्रक्रिया के माध्यम से Windows PATH चर को परिवर्तित करता है। यह अतिरिक्त वस्तुओं को जोड़ने के रूप में सरल नहीं है: ';' ':' के लिए अनुवादित है, ड्राइव स्पेसिफिकेशन्स को डायरेक्टरी नामों में बदल दिया जाता है, और कुछ अन्य रूपांतरण भी हो रहे हैं। कुछ मामलों में, यह रूपांतरण गलत है - "c:\Program Files\Java\jdk1.8.0_25"\binमेरी विंडोज़ पथ /c/Program Files/Java/jdk1.8.0_25"/biमें गिट बैश पथ में परिवर्तित किया गया है (पहला और अंतिम चरित्र गायब है) ... तो सवाल यह है कि यह कैसे होता है?
जूल्स

@ जूल्स जो वास्तव में संभव है। 5 वर्षों में बहुत कुछ बदल गया है।
वॉन

5

इसी तरह की समस्या के लिए मेरा छोटा सा समाधान है (विंडोज 10 पर MSYS2 बैश)।

यह विचार आवश्यक पथों को यूनिक्स-शैली पथों में परिवर्तित करने और उन्हें $ PATH को प्रतिबंधित करने के लिए जोड़ता है, जो सभी .bashrc में किया गया है।

जीत पथ के लिए आवश्यक पथों को अपग्रेड न करें। इसके बजाय MSYS2_WINPATH की तरह विंडोज में एक नया env var बनाएं, और इस वेरिएबल में सभी अर्धविराम से अलग किए गए विंडोज पथ निर्देशिकाओं को जोड़ें। % MSYS2_WINPATH% को% PATH% में जोड़ें।

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

################################## Construct PATH variable ##################################

winpath=$(echo $MSYS2_WINPATH | tr ";" "\n" | sed -e 's/\\/\\\\/g' | xargs -I {} cygpath -u {})
unixpath=''

# Set delimiter to new line
IFS=$'\n'

for pth in $winpath; do unixpath+=$(echo $pth)":"; done

export PATH=$(echo $PATH:$unixpath | sed -e 's/:$//g')
unset IFS
unset unixpath
unset winpath

################################# Constructed PATH variable #################################

कोशिश की है कि git-bash में और यह .bashrc के लिए वर्कअराउंड के बिना काम करता है। धन्यवाद!
माइकल हैडल

यह सुनकर अच्छा लगा :) आपका स्वागत है।
शुभ

2

यदि PATH का मान आपके उपयोगकर्ता के PATH चर पर्यावरण PATH चर पर समाप्‍त हो जाने के बाद बहुत लंबा होगा, तो Windows चुपचाप उपयोगकर्ता PATH चर को समाप्‍त करने में विफल रहेगा।

नया सॉफ़्टवेयर स्थापित होने के बाद यह आसानी से हो सकता है और PATH में कुछ जोड़ता है, जिससे मौजूदा स्थापित सॉफ़्टवेयर टूट जाता है। विंडोज विफल!

सबसे अच्छा फिक्स कंट्रोल पैनल में एक पेटी चर को संपादित करना और उन प्रविष्टियों को हटाना है जिनकी आपको आवश्यकता नहीं है। फिर एक नई सीएमडी विंडो खोलें और देखें कि क्या सभी प्रविष्टियाँ "इको% पाथ%" में दिखाई जाती हैं।


1

निर्देशिका को अपने पथ चर की शुरुआत में ले जाने का प्रयास करें। मेरे पास p4merge स्थापित करने के बाद आपके पास एक ही मुद्दा था। Perforce निर्देशिका को पथ में जोड़ा गया था और p4merge को cmd.exe द्वारा पाया गया था, लेकिन गिट शेल (मिंगव) नहीं। एक फलहीन खोज के बाद, मैंने केवल चर को संपादित करने की कोशिश की, ताकि मेरे रास्ते में पहली बार पेरिफेरल डायरेक्टरी दिखाई पड़े। मैंने गिट शेल को निकाल दिया $ echo $pathऔर $ p4mergeवॉयला , निर्देशिका को आउटपुट में शामिल किया है , और p4merge को खोलता है।

यह एक लंगड़ा जवाब की तरह है, क्योंकि मैं इस बात से जूझ रहा हूं कि यह क्यों काम करता है, लेकिन अगर काम-काज किसी और की मदद करता है, तो महान।

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