Dlaczego mogę wykonać program, który nie znajduje się w mojej zmiennej środowiskowej PATH?


9

Zastanawiałem się, dlaczego polecenie java -versionjest globalnie dostępne?

Mógłbym uruchomić go z dowolnego katalogu i działającego:

wprowadź opis zdjęcia tutaj

Jak to działa?

Tak wygląda moja PATHzmienna systemowa :

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

Jak dla mnie java.exeznajduje się w%programfiles%\java\jre7\bin


2
Zobacz tutaj .
Daniel Beck

W tej chwili nie mam szczegółowych informacji, dlatego jest to komentarz, a nie odpowiedź, ale jeśli java.exe(lub java.comitp.) Nie ma w tobie, PATHistnieje inny wpis rejestru, który może określać ścieżki wykonywalne.
Mark Hurd

1
@MarkHurd cmd (i CreateProcess) nie sprawdza wpisu rejestru Ścieżki aplikacji, tylko ShellExecute [i dlatego okno dialogowe Uruchom].
Random832

@MarkHurd, jak już oczekiwać, że to nie w moim zmiennej path ..
Pacerier

1
@Pacerier Plik wykonywalny java znajduje się w% SystemRoot% \ System32 \
Dwayne Hinterlang

Odpowiedzi:


13

Zazwyczaj istnieje grupa katalogów, w których pliki wykonywalne, które są wielokrotnie używane, znajdują się w systemie Windows, ale w praktyce nie ma konkretnego powodu, aby używać polecenia jako globalnego lub nie. Deweloperzy umieszczali go jako „globalny”, gdziekolwiek chcą, mogą to robić. Jeśli chcesz użyć dowolnego polecenia jako „globalnego”, musisz dodać to polecenie jako „Zmienną środowisko Windows” . Aby to zrobić, możesz użyć następujących metod :

  1. Dodawanie ręczne za pomocą „Właściwości systemu Windows”: wprowadź opis zdjęcia tutaj

  2. Za pomocą narzędzia dodatkowego Setx.exe:

Nie jest częścią standardowej konfiguracji systemu Windows XP, ale narzędzie wiersza polecenia o nazwie setx.exe znajduje się w narzędziach obsługi systemu Windows XP z dodatkiem Service Pack 2. To narzędzie rozszerza polecenie set, dzięki czemu można wprowadzać trwałe zmiany w zmiennych środowiskowych. Na przykład, aby dodać folder C: \ Nowy folder do ścieżki, polecenie brzmiałoby:

setx path "%PATH%;C:\New Folder" 
  1. Skrypty do wyświetlania zmiennych środowiskowych:

Polecenia „Ustaw” można używać w wierszu polecenia wraz z przekierowaniem do pliku tekstowego w celu utworzenia listy bieżących zmiennych środowiskowych. Może to być polecenie

set > C:\env_list.txt 

Nazwę pliku „C: \ env_list.txt” można zastąpić dowolnym wyborem.

Microsoft ma również VBScript, który wyświetla zmienne środowiskowe na tej stronie .

  1. Klucze rejestru dla zmiennych środowiskowych:

Dla tych, którzy mają doświadczenie w edytowaniu rejestru, istnieje inny sposób wprowadzania zmian w zmiennych środowiskowych. Zmienne środowiskowe użytkownika są przechowywane w rejestrze w kluczu:

HKEY_CURRENT_USER\Environment

Zmienne systemowe znajdują się w kluczu:

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

Należy zauważyć, że każda zmienna środowiskowa w formie, którą należy rozszerzyć (na przykład% PATH%), musi być przechowywana w rejestrze jako wartość rejestru REG_EXPAND_SZ. Edycja rejestru dotyczy przede wszystkim skryptów używanych przez administratorów systemów i nie jest zalecana dla przeciętnego użytkownika komputera.

Więcej informacji na ten temat można znaleźć tutaj.


1
Jednak java.exe znajduje się w %programfiles%\java\jre7\bin. Ten folder nie pojawia się w zmiennej Path mojego systemu.
Pacerier

7
Java.exe znajduje się również w% SystemRoot% \ System32 \, który pojawia się w zmiennej PATH
Dwayne Hinterlang

5

„Polecenia globalne” są określone przez zmienne środowiskowe.

W zależności od używanego systemu operacyjnego przejście do jego ustawienia jest raczej różne.

Najbardziej ogólny sposób to

Kliknij prawym przyciskiem myszy „Mój komputer” Wybierz „Właściwości”

W Windows7 będziesz musiał wybrać „Zaawansowane ustawienia systemu” w okienku po lewej stronie.

Po otwarciu okna dialogowego Właściwości systemu wybierz kartę „Zaawansowane”.

Na dole znajduje się przycisk „Zmienne środowiskowe”

W oknie dialogowym Zmienne środowiskowe będziesz mógł skonfigurować zmienne środowiskowe dla użytkownika lub dla całego systemu.

Na przykład uproszczona „Ścieżka” zmiennej systemowej wyglądałaby mniej więcej tak ...

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

Pliki wykonywalne na tych ścieżkach można wywoływać bezpośrednio z wiersza poleceń.

Powodem, dla którego możesz wywoływać calc, mspaint, cmd wszystko z okna dialogowego Uruchom, jest to, że C: \ windows \ system32 znajduje się w zmiennej środowiskowej Path.

Możesz dodać niestandardowe ścieżki do zmiennych środowiskowych, uważając, aby nie zastąpić istniejącej i oddzielić ścieżki za pomocą średnika. „;”

Następnie można uruchomić plik wykonywalny z tej ścieżki bezpośrednio w wierszu polecenia bez wpisywania całej ścieżki, na przykład polecenia java -version.

Więcej informacji można znaleźć w poniższych linkach ...

Zmienne środowiska

Zrozum i konfiguruj zmienne środowiskowe

Java.exe Wyszukaj w nowej instalacji


3

Oto prosty sposób, whichktóry wyświetla wszystkie trafienia poleceń w PATH dla bieżących rozszerzeń PATHEXT:

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

Włóż to where.cmd(pozwalając whichprzyjść skądś, jeśli go zdobędziesz!) I zadzwoń where java.

Teraz, w moim komentarzu powyżej, zasugerowałem, że jeśli javanie nie pojawiają się w PATH, można sprawdzić w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths [ref] , ale po rzeczywiście próbuje to, że nie działa z linii poleceń, tylko rzeczy, które użytku ShellExecuteEx, takie jak Start Uruchom i startpolecenie CLI.


2

Po wprowadzeniu polecenia powłoka patrzy na zmienną środowiskową o nazwie PATH (% PATH%, $ PATH w zależności od systemu operacyjnego). Przeszukuje każdy katalog w ścieżce, aby sprawdzić, czy napotka plik wykonywalny pasujący do wprowadzonego polecenia. Pierwszy, który znajdzie, zostanie wykonany.

Zobacz inne odpowiedzi na niektóre z różnych sposobów ustawiania zmiennej PATH.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.