Добавление каталога в переменную среды PATH в Windows - PullRequest
462 голосов
/ 03 марта 2012

Я пытаюсь добавить C:\xampp\php к моей системной PATH переменной среды в Windows.

Я уже добавил ее с помощью диалогового окна «Переменные среды».

Но когда я набираюв мою консоль:

C:\>path

не отображается новый каталог C:\xampp\php:

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

У меня есть два вопроса:

  1. Почемуэто случилось?Что-то я не так сделал?
  2. Кроме того, как мне добавить каталоги в мою переменную PATH с помощью консоли (и программно, с командным файлом)?

Ответы [ 17 ]

881 голосов
/ 03 марта 2012

Опция 1

После изменения PATH с помощью графического интерфейса пользователя закройте и снова откройте окно консоли.

Это работает, поскольку только программы, запущенные после изменения, увидят новое PATH.

Опция 2

Выполните эту команду в открывшемся окне:

set PATH=%PATH%;C:\your\path\here\

Эта команда добавляет C:\your\path\here\ к текущему PATH.

Разбивка:

  • set - Команда, которая изменяет переменные среды cmd только для текущего сеанса cmd ;на другие программы и систему это не влияет.
  • PATH= - означает, что PATH - это переменная среды, которая должна быть временно изменена.
  • %PATH%;C:\your\path\here\ - Часть %PATH% расширяется дотекущее значение PATH, а затем ;C:\your\path\here\ присоединяется к нему.Это становится новым PATH.
182 голосов
/ 28 февраля 2015

ПРЕДУПРЕЖДЕНИЕ: Это решение может быть разрушительным для вашей PATH и стабильности вашей системы.Как побочный эффект, он объединит ваш пользовательский и системный PATH и урежет PATH до 1024 символов.Эффект этой команды необратим.Сначала сделайте резервную копию PATH.См. Комментарии для получения дополнительной информации.

Не копируйте и не вставляйте это вслепую.Используйте с осторожностью.

Вы можете навсегда добавить путь к PATH с помощью команды setx:

setx /M path "%path%;C:\your\path\here\"

Удалите флаг /M, если вы хотите установить пользователя PATH вместо системы PATH.

Примечания:

  • Команда setx доступна тольков Windows 7 и более поздних версиях.
  • Эту команду следует запускать из командной строки с повышенными привилегиями.

  • Если вы хотите изменить ее только для текущего сеанса,используйте набор .

125 голосов
/ 03 марта 2012

Это только изменяет реестр.Существующий процесс не будет использовать эти значения.Новый процесс сделает это, если он будет запущен после этого изменения и не наследует старую среду от своего родителя.начал сеанс консоли.Лучший способ убедиться в этом - выйти из командной оболочки и запустить ее снова.Затем он должен наследовать обновленный PATH.

59 голосов
/ 01 июля 2015

Вам не нужна никакая команда set или setx, просто откройте терминал и введите:

PATH

Показывает текущее значение переменной PATH. Теперь вы хотите добавить каталог к ​​нему? Просто введите:

PATH %PATH%;C:\xampp\php

Если по какой-либо причине вы хотите очистить переменную PATH (без путей вообще или удалить все пути в ней), введите:

PATH ;

Обновление

Как отметил Даниал Уилсон в комментарии ниже, он устанавливает путь только в текущей сессии. Чтобы установить постоянный путь, используйте setx, но имейте в виду, хотя этот путь устанавливается постоянно, но НЕ в текущем сеансе, поэтому вам нужно запустить новую командную строку, чтобы увидеть изменения, дополнительная информация здесь .

Чтобы проверить, существует ли переменная среды или увидеть ее значение, используйте ECHO commnad:

echo %YOUR_ENV_VARIABLE%
35 голосов
/ 17 марта 2015

В эпоху PowerShell я бы редактировал PATH следующим образом:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")

Чтобы задать переменную для всех пользователей, для всей машины последняя строка должна выглядеть так:

В сценарии PowerShell вы можете проверить наличие вашего C:\xampp\php перед добавлением в PATH (в случае, если он был добавлен ранее).Вы можете обернуть его в условное if.

Итак, все вместе:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
    [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}
30 голосов
/ 29 декабря 2016

Безопаснее SETX

Кивок на все комментарии к исходному @ Nafscript SETX ответу .

  • SETX по умолчанию обновит ваш пользовательский путь.
  • SETX ... /M обновит ваш системный путь.
  • %PATH% содержит системный путь с добавленным пользовательским путем

Предупреждения

  1. Сделайте резервную копию вашего PATH - SETX будет обрезать ваш мусор длиннее 1024 символов
  2. Не звонить SETX %PATH%;xxx - добавляет системный путь в пользовательский путь
  3. Не звонить SETX %PATH%;xxx /M - добавляет пользовательский путь в системный путь
  4. Чрезмерное использование командного файла может вызвать слепоту 1

На странице ss64 SETX есть несколько очень хороших примеров. Важно отметить, что ключи реестра находятся для SETX против SETX /M

Переменные пользователя:

HKCU\Environment

Системные переменные:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Инструкция по применению

Добавить к пользователю PATH

append_user_path.cmd

@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1

Добавить в систему PATH

append_system_path.cmd. Должен запускаться от имени администратора.

(в основном то же самое, за исключением другого Key и модификатора SETX /M)

@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M

Альтернативы

Наконец, существует потенциально улучшенная версия под названием SETENV , рекомендованная страницей SETX ss64, в которой разделены установки пользовательских или системных переменных среды.


1. Не совсем верно

23 голосов
/ 18 марта 2016

Поздно к вечеринке - но удобно, если вы уже находитесь в каталоге, который хотите добавить в PATH.

set PATH=%PATH%;%CD%

edit: согласно комментарию - работает со стандартным cmd для windowsно не в powershell.

Для powershell эквивалент %CD% равен [System.Environment]::CurrentDirectory

19 голосов
/ 04 февраля 2017

Что если вы неправильно наберете путь с помощью setx? Лучший способ - просто через окна U.I. Панель управления-> Все элементы панели управления-> Система-> Расширенные настройки системы-> Переменные среды

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

3 голосов
/ 17 февраля 2016

Помимо всех ответов, если вам нужен хороший графический инструмент для редактирования переменных среды Windows, вы можете использовать Rapid Environment Editor

попробовать!это безопасно в использовании и удивительно!

http://www.rapidee.com/en/

3 голосов
/ 06 сентября 2016
  • изменения в командной строке не будут постоянными, будут потеряны при закрытии консоли.
  • Путь работает так, как первый пришел первым обслужен.
  • Вы можете переопределить другие уже включенные исполняемые файлы.Например, если у вас уже есть другая версия в вашем пути, и вы хотите добавить другую версию, не внося постоянное изменение в путь, вы должны поместить каталог в начало команды.исполняемые файлы;

    set PATH = C: \ xampp \ php;% PATH%;

...