मैं एक प्रोग्राम को निष्पादित करने में सक्षम क्यों हूं जो मेरे पैथ वातावरण चर में नहीं है?


9

मैं सोच रहा था क्यों आदेश java -versionहै विश्व स्तर पर सुलभ?

मैं इसे किसी भी निर्देशिका और इसके कार्य से चला सकता हूं:

यहाँ छवि विवरण दर्ज करें

यह कैसे काम करता है?

यह मेरा सिस्टम PATHवैरिएबल जैसा दिखता है:

C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

मेरे लिए, java.exeमें स्थित है%programfiles%\java\jre7\bin



मैं इस पल जिसके कारण इस एक टिप्पणी और नहीं एक जवाब है पर हाथ में विवरण नहीं है, लेकिन अगर java.exe(या java.com, आदि) है नहीं अपने में PATHएक और रजिस्ट्री प्रविष्टि कि निष्पादन योग्य पथ निर्दिष्ट कर सकते हैं।
मार्क हर्ड

1
@MarkHurd cmd (और CreateProcess) App पथ रजिस्ट्री प्रविष्टि, केवल ShellExecute [और इसलिए रन डायलॉग] की जांच नहीं करता है।
रैंडम 832

@ मार्खर्ड, जैसा कि आप उम्मीद कर रहे हैं, यह मेरे पथ चर में नहीं है ..
पचेरियर

1
@Pacerier जावा निष्पादन योग्य% SystemRoot% \ System32 \ में पाया जाता है
ड्वेन हेन्टरलैंग

जवाबों:


13

आमतौर पर, निर्देशिकाओं का एक समूह होता है जहां निष्पादन योग्य फाइलें जो बार-बार उपयोग की जाती हैं, वे आपके विंडोज द्वारा पाई जाती हैं, लेकिन प्रैटिस में कमांड को वैश्विक रूप से उपयोग करने का कोई विशेष कारण नहीं है या नहीं। डेवलपर्स इसे "वैश्विक" के रूप में शामिल करना चाहते थे, जहां भी वे चाहते हैं, वे इसे करने के लिए स्वतंत्र हैं। यदि आप किसी कमांड को "वैश्विक" के रूप में उपयोग करना चाहते हैं, तो आपको "विंडोज एनवायरमेंट वेरिएबल" के रूप में अपनी कमांड को जोड़ना होगा । ऐसा करने के लिए, आप फोलोइंग विधियों का उपयोग कर सकते हैं :

  1. "विंडोज सिस्टम गुण" के साथ मैन्युअल रूप से जोड़ना: यहाँ छवि विवरण दर्ज करें

  2. ऐड-ऑन टूल का उपयोग करना Setx.exe:

यह मानक Windows XP सेटअप का हिस्सा नहीं है, लेकिन setx.exe नामक एक कमांड-लाइन टूल Windows XP सर्विस पैक 2 सहायता उपकरण में शामिल है। यह उपकरण सेट कमांड का विस्तार करता है ताकि पर्यावरण चर में स्थायी परिवर्तन किए जा सकें। उदाहरण के लिए, पथ में एक फ़ोल्डर C: \ New फ़ोल्डर जोड़ने के लिए, कमांड होगा

setx path "%PATH%;C:\New Folder" 
  1. लिस्टिंग पर्यावरण चर के लिए लिपियों:

"सेट" कमांड का उपयोग कमांड प्रॉम्प्ट में वर्तमान पर्यावरण चर की सूची बनाने के लिए पाठ फ़ाइल पर पुनर्निर्देशन के साथ किया जा सकता है। आदेश हो सकता है

set > C:\env_list.txt 

फ़ाइल का नाम "C: \ env_list.txt" आपकी किसी भी पसंद से बदला जा सकता है।

Microsoft के पास एक VBScript भी है जो इस पृष्ठ पर पर्यावरण चर को सूचीबद्ध करता है ।

  1. पर्यावरण चर के लिए रजिस्ट्री कुंजी:

जो लोग रजिस्ट्री को संपादित करने के साथ अनुभवी हैं, उनके लिए पर्यावरण चर में बदलाव करने का एक और तरीका है। उपयोगकर्ता पर्यावरण चर कुंजी में रजिस्ट्री में संग्रहीत हैं:

HKEY_CURRENT_USER\Environment

सिस्टम चर कुंजी में पाए जाते हैं:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

ध्यान दें कि कोई भी पर्यावरण चर जो उस फॉर्म में है जिसे विस्तारित किया जाना चाहिए (उदाहरण के लिए,% PATH%) को रजिस्ट्री में REG_EXPAND_SZ रजिस्ट्री मान के रूप में संग्रहीत किया जाना चाहिए। रजिस्ट्री का संपादन मुख्य रूप से सिस्टम प्रशासक द्वारा उपयोग की जाने वाली स्क्रिप्ट के लिए है और औसत पीसी उपयोगकर्ता के लिए अनुशंसित नहीं है।

आप इसके बारे में अधिक जानकारी यहाँ पा सकते हैं


1
हालाँकि, java.exe में स्थित है %programfiles%\java\jre7\bin। यह फ़ोल्डर मेरे सिस्टम के पाथ वेरिएबल में नहीं दिखता है
Pacerier

7
Java.exe% SystemRoot% \ System32 में भी पाया जाता है जो आपके PATH चर में दिखाई देता है
ड्वेन हिंटरलैंग

5

"ग्लोबल कमांड" आपके पर्यावरण चर द्वारा निर्धारित किए जाते हैं।

निर्भर करता है कि आप इसे सेट करने के लिए किस ओएस का उपयोग कर रहे हैं, बल्कि यह अलग है।

सबसे सामान्य तरीका है

"मेरे कंप्यूटर" पर राइट-क्लिक करें "गुण" चुनें

विंडोज 7 में आपको बाईं ओर के फलक में "उन्नत सिस्टम सेटिंग्स" का चयन करना होगा।

एक बार जब आपके पास सिस्टम गुण संवाद खुला हो, तो "उन्नत" टैब चुनें।

तल पर, एक बटन है "पर्यावरण चर"

पर्यावरण चर डायलॉग में, आप प्रति उपयोगकर्ता या संपूर्ण सिस्टम के लिए पर्यावरण चर को कॉन्फ़िगर करने में सक्षम होंगे।

उदाहरण के लिए, सिस्टम चर "पथ" सरलीकृत कुछ इस तरह दिखेगा ...

C: \ Program Files \ Java \ jre6 \ bin ; C: \ Ruby19 \ bin;

इन रास्तों के निष्पादन को सीधे कमांड लाइन से बुलाया जा सकता है।

रन डायलॉग से आप सभी को calc, mspaint, cmd कह सकते हैं क्योंकि C: \ windows \ system32 पाथ एनवायरनमेंट वैरिएबल में है।

आप पर्यावरण चर में कस्टम पथ जोड़ सकते हैं, सावधान रहें कि मौजूदा को ओवरराइड न करें और अर्ध-कोलन का उपयोग करके पथ को अलग करें। ","

फिर आप पूरे रास्ते को टाइप किए बिना सीधे कमांड लाइन में उस पथ से एक निष्पादन योग्य चला सकते हैं, जैसे कि java -version कमांड।

अधिक पढ़ने के लिए कृपया निम्न लिंक देखें ...

पर्यावरण चर

पर्यावरण चर को समझें और कॉन्फ़िगर करें

Java.exe एक नए इंस्टॉल पर खोजें


3

यहाँ एक सरल है whichजो कि मौजूदा PATHEXT एक्सटेंशन के लिए PATH में सभी कमांड हिट प्रदर्शित करता है:

@for %%I in ("%path:;=\" "%") do @for %%E in (%pathext:;= %) do @if exist "%%~dpI%1%%E" @echo %%~dpI%1%%E

इसे रखो where.cmd( whichयदि आप इसे प्राप्त करने के लिए कहीं और से आने की अनुमति देते हैं!) और इसके साथ कॉल करें where java

अब, ऊपर मेरी टिप्पणी में, मैं सुझाव दिया है कि अगर javaहै नहीं अपने में दिखाई देते हैं PATH, तो आप में जाँच कर सकते हैं HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths [रेफरी] , लेकिन उसके बाद वास्तव में इस की कोशिश कर रहा, यह करता है कमांड लाइन के साथ काम नहीं, केवल बातों के साथ कि उपयोग ShellExecuteExजैसे, भागो प्रारंभ और startCLI कमांड।


2

जब आप एक कमांड दर्ज करते हैं, तो शेल PATH (% PATH%, $ PATH ओएस पर निर्भर करता है) नामक एक पर्यावरण चर को देखता है। यह पीएटीएच पर प्रत्येक निर्देशिका पर सवाल उठाता है कि क्या यह एक निष्पादन योग्य का सामना करता है जो आपके द्वारा दर्ज कमांड से मेल खाता है। पहले वाला इसे निष्पादित करेगा।

PATH वैरिएबल सेट करने के विभिन्न तरीकों में से कुछ के लिए अन्य उत्तर देखें।

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