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

4 ответа4

13

Как правило, существует группа каталогов, в которой исполняемые файлы, которые многократно используются, должны быть найдены вашей Windows, но на практике нет особой причины использовать команду как глобальную или нет. Разработчики использовали его как "глобальный", где бы он ни захотел, он может это сделать. Если вы хотите использовать какую-либо команду как "глобальную", вам нужно будет добавить ее как "переменную среды Windows". Для этого вы можете использовать следующие методы:

  1. Добавление вручную с помощью "Свойства системы Windows":

  2. Используя дополнительный инструмент Setx.exe:

Он не является частью стандартной установки Windows XP, но средство командной строки setx.exe входит в состав средств поддержки Windows XP с пакетом обновления 2 (SP2). Этот инструмент расширяет команду set, так что можно вносить постоянные изменения в переменные среды. Например, чтобы добавить папку C:\New Folder в путь, команда

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. Редактирование реестра в основном для сценариев, используемых системными администраторами, и не рекомендуется для обычного пользователя ПК.

Вы можете найти больше информации об этом здесь.

5

"Глобальные команды" определяются вашими переменными среды.

В зависимости от того, какую операционную систему вы используете, она может быть разной.

Наиболее общий способ заключается в

Щелкните правой кнопкой мыши "Мой компьютер", выберите "Свойства"

В Windows7 вам нужно будет выбрать "Расширенные настройки системы" на панели слева.

Открыв диалоговое окно "Свойства системы", выберите вкладку "Дополнительно".

Внизу есть кнопка "Переменные среды"

В диалоге переменных среды вы сможете настроить переменные среды для пользователя или для всей системы.

Например, системная переменная "Упрощенный путь" будет выглядеть примерно так ...

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

Исполняемые файлы в этих путях могут быть вызваны непосредственно из командной строки.

Причина, по которой вы можете вызывать calc, mspaint, cmd все из диалогового окна Run, заключается в том, что C:\windows\system32 находится в переменной среды Path.

Вы можете добавить пользовательские пути в переменные среды, стараясь не переопределять существующий и отделять пути с помощью точки с запятой. ";"

Затем вы можете запустить исполняемый файл с этого пути непосредственно в командной строке, не вводя весь путь, как команда java -version.

Для получения дополнительной информации см. Следующие ссылки ...

Переменные среды

Понимать и настраивать переменные среды

Поиск Java.exe при новой установке

3

Вот простой способ, which отображает все попадания команд в PATH для текущих расширений PATHEXT:

@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 [ref] , но после того, как вы на самом деле попробовали это, он не работает с командная строка, только с вещами, которые используют ShellExecuteEx , такими как Start Run и команда start CLI.

2

Когда вы вводите команду, оболочка просматривает переменную среды с именем PATH (% PATH%, $ PATH в зависимости от ОС). Он запрашивает каждый каталог в переменной PATH, чтобы узнать, встречает ли он исполняемый файл, который соответствует введенной вами команде. Первый найденный будет выполнен.

Посмотрите другие ответы для некоторых из различных способов установить переменную PATH.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .