जब मैं विंडोज 7/8/10 पर संगीतकार स्थापित करता हूं, या कुछ यूएनआईएक्स-अनुकूल कार्यक्रम जैसे कि जीएनयू टार , मुझे उनका पथ मान सेट करने की आवश्यकता है, और अगर मैं नहीं करता हूं, तो वे अन्य कार्यक्रमों द्वारा उपयोग करने योग्य नहीं होंगे?
जब मैं विंडोज 7/8/10 पर संगीतकार स्थापित करता हूं, या कुछ यूएनआईएक्स-अनुकूल कार्यक्रम जैसे कि जीएनयू टार , मुझे उनका पथ मान सेट करने की आवश्यकता है, और अगर मैं नहीं करता हूं, तो वे अन्य कार्यक्रमों द्वारा उपयोग करने योग्य नहीं होंगे?
जवाबों:
मैंने इसका जवाब Microsoft Windows के लिए दिया। मैं देख रहा हूँ कि यहाँ पर एक लिनक्स टैग भी है। खैर, वही अवधारणाएं लागू होती हैं। (आगे के लिनक्स नोटों का अंतिम पैराग्राफ में उल्लेख किया गया है।)
यदि आप PATH परिवेश चर द्वारा निर्दिष्ट निर्देशिका में नहीं हैं, तो आप प्रोग्राम का उपयोग कर सकते हैं। हालांकि, यह थोड़ा कम सुविधाजनक है।
उदाहरण के लिए, मैं अक्सर 7-ज़िप चलाता हूं, भले ही वह रास्ते में न हो। इसलिए "7z" के साथ कमांड लाइन शुरू करने के बजाय, मैं कमांड लाइन को इसके साथ शुरू करता हूं:
"C:\Program Files\7-Zip\7z.exe"
यह जितना दिखता है उतना बुरा नहीं है, क्योंकि मैं वास्तव में जो टाइप करता हूं वह आमतौर पर कुछ अधिक होता है जैसे:
C: \ tabPro tab7 tab7tab
(मैं बीप्स के लिए सुनता हूं जो अगर टाइपो हैं, तो हो सकता है और tabकुंजी के साथ मेरे अंतिम विस्तार के बाद , मैं सटीकता के लिए कमांड लाइन की भी जांच करता हूं, यह सुनिश्चित करने के लिए कि यह वही चलाता है जो मैं इसे चाहता था।)
एक प्रोग्राम यह जांच सकता है कि आपने कमांड लाइन पर प्रोग्राम को कैसे संदर्भित किया है, और अपनी वर्तमान निर्देशिका की जांच कर सकता है। तो एक कार्यक्रम अलग-अलग कार्य कर सकता है, अगर यह पाथ में है। हालाँकि, यह संभावना नहीं है।
एक वैकल्पिक समाधान: PATH पर्यावरण चर को समायोजित करने के लिए उस निर्देशिका को भी शामिल करें जहाँ कोई प्रोग्राम स्थापित है।
एक अन्य वैकल्पिक समाधान: निष्पादन योग्य फ़ाइल को एक निर्देशिका में रखें जो पहले से ही पैट में है। (हालांकि, कुछ प्रोग्राम अधिक जटिल होते हैं, क्योंकि उन्हें अन्य फ़ाइलों की भी आवश्यकता हो सकती है, जैसे DLL फाइलें, इस तरह के डायरेक्टरी में कॉपी की जाती हैं। इसलिए, इस दृष्टिकोण को आमतौर पर उन प्रोग्रामों के लिए अनुशंसित नहीं किया जाता है जिन्हें आपको "इंस्टॉलेशन" करके "इंस्टॉल" करने की आवश्यकता होती है। कार्यक्रम "। हालांकि, सरल निष्पादक के लिए जो समर्थन फ़ाइलों का एक गुच्छा की आवश्यकता के बिना चलाया जा सकता है, यह अक्सर व्यवहार्य है।)
लिनक्स में, कुछ मामूली अंतर हैं: आप " echo ${PATH}
" के बजाय " " का उपयोग करेंगे echo %PATH%
, बैकस्लैश के बजाय आगे स्लैश का उपयोग करें, इसके बजाय 7za
7-ज़िप के लिए उपयोग करें 7z.exe
। यदि आप पथ को समायोजित करना चाहते हैं, तो आप एक अलग कमांड का उपयोग कर सकते हैं, जैसे export
, लेकिन वास्तव में आपके द्वारा उपयोग किए जाने वाले शेल पर निर्भर करता है।)
कुछ कार्यक्रमों को एक पथ मान की आवश्यकता क्यों है, और कुछ अन्य विंडोज में नहीं हैं?
जब मैं विंडोज 7/8/10 पर संगीतकार स्थापित करता हूं, या कुछ यूएनआईएक्स-अनुकूल कार्यक्रम जैसे कि जीएनयू टार, मुझे उनका पथ मान सेट करने की आवश्यकता है, और अगर मैं नहीं करता हूं, तो यह अन्य कार्यक्रमों द्वारा उपयोग करने योग्य नहीं होगा?
पथ यूनिक्स जैसे ऑपरेटिंग सिस्टम, डॉस, ओएस / 2 और माइक्रोसॉफ्ट विंडोज पर एक पर्यावरण चर है, निर्देशिका के एक सेट को निर्दिष्ट करते हुए जहां निष्पादन योग्य कार्यक्रम स्थित हैं। सामान्य तौर पर, प्रत्येक निष्पादन प्रक्रिया या उपयोगकर्ता सत्र की अपनी पैथ सेटिंग होती है।
डॉस, ओएस / 2, और विंडोज
कुछ प्रोग्राम स्थापना के दौरान PATH चर की सामग्री के सामने अपनी निर्देशिका जोड़ सकते हैं, ताकि खोज प्रक्रिया और / या OS आदेशों को गति दी जा सके। डॉस युग में, एक PATH {program directory};%PATH%
या SET PATH={program directory};%PATH%
लाइन को जोड़ने के लिए प्रथागत था AUTOEXEC.BAT
।
जब एक कमांड शेल में एक कमांड दर्ज किया जाता है या किसी प्रोग्राम को निष्पादित करने के लिए एक प्रोग्राम द्वारा एक सिस्टम कॉल किया जाता है, तो सिस्टम पहले वर्तमान वर्किंग डाइरेक्टरी को खोजता है और फिर एक एग्जीक्यूटेबल फाइलनाम की तलाश में, बाएं से दाएं की ओर प्रत्येक डाइरेक्टरी की जांच करता है। जो दिए गए कमांड नाम से मेल खाता है। निष्पादन योग्य कार्यक्रमों में फ़ाइल नाम का विस्तार EXE
या COM
, और बैच स्क्रिप्ट के एक्सटेंशन हैं BAT
या CMD
। अन्य निष्पादन योग्य फ़ाइल एक्सटेंशन को सिस्टम के साथ भी पंजीकृत किया जा सकता है।
यूनिक्स और यूनिक्स की तरह
जब एक कमांड नाम उपयोगकर्ता द्वारा निर्दिष्ट किया जाता है या एक प्रोग्राम से एक निष्पादन कॉल किया जाता है, तो सिस्टम खोजता है $PATH
, सूची में बाएं से दाएं प्रत्येक सूची की जांच करता है, कमांड नाम से मेल खाने वाले फ़ाइलनाम की तलाश करता है। एक बार मिल जाने के बाद, प्रोग्राम को कमांड शेल या प्रोग्राम जारी करने वाले प्रोग्राम के चाइल्ड प्रोसेस के रूप में निष्पादित किया जाता है।
स्रोत: PATH_ (परिवर्तनशील)
विंडोज में, एक एप्लिकेशन {HKCU|HKLM}\Software\Microsoft\Windows\CurrentVersion\App Paths
रजिस्ट्री के तहत अपना रास्ता पंजीकृत कर सकता है । Windows तब याद रखेगा कि PATH
पर्यावरण चर को फुलाए बिना संबंधित .exe फ़ाइल को कहां खोजना है ।
से आवेदन पंजीकरण :
प्रति उपयोगकर्ता के लिए इंस्टॉल किया गया एक एप्लिकेशन HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ App पथ के तहत पंजीकृत किया जा सकता है। कंप्यूटर के सभी उपयोगकर्ताओं के लिए स्थापित किया गया एक अनुप्रयोग HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ App पथ के तहत पंजीकृत किया जा सकता है।
ऐप पाथ्स के तहत मिलने वाली प्रविष्टियाँ मुख्य रूप से निम्नलिखित उद्देश्यों के लिए उपयोग की जाती हैं:
- किसी एप्लिकेशन के निष्पादन योग्य फ़ाइल नाम को उस फ़ाइल के पूर्ण योग्य पथ पर मैप करने के लिए।
- प्रति आवेदन, प्रति-प्रक्रिया के आधार पर पेटीएम पर्यावरण चर के लिए जानकारी पूर्व-पेंड करने के लिए।
उदाहरण के लिए, एक डिफ़ॉल्ट विंडोज इंस्टॉलेशन में रजिस्ट्री प्रविष्टि है:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE
(Default)="%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE"
यह वर्डपैड को स्टार्ट / रन से टाइपिंग-इन wordpad
( बस या start wordpad
एक सीएमडी प्रॉम्प्ट पर) शुरू करने की अनुमति देता है, भले ही %ProgramFiles%\Windows NT\Accessories
यह पेट में न हो।
start
- start wordpad
काम करेगा, लेकिन बस wordpad
नहीं होगा। (एपीआई स्तर पर अंतर यह है कि start
ShellExecEx को कॉल करता है जो पहचानता है और इसका उपयोग करता है App Paths
, जबकि सीधे CreateProcess को कॉल करता है जो नहीं करता है।)
start
इस मामले में एक और कमांड का उपयोग करना है , बल्कि उस प्रोग्राम का नाम जिसे आप चलाना चाहते हैं, तो यह काम नहीं करता है। और यह छोटा विवरण बड़ी बात है। (मुझे अंतर के बारे में पता है, धन्यवाद।)
%PATH%
, तो आप नए कमांड को "शेल" में टाइप कर सकते हैं।