Добавление каталога в переменную среды PATH в Windows

Я пытаюсь добавить 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 переменная с помощью консоли (и программно, с командным файлом)?

23 ответа

Решение

Это только изменяет реестр. Процесс не будет использовать эти значения до тех пор, пока не будет запущен после этого изменения, и не наследует среду от своего родителя.

Вы не указали, как вы начали сеанс консоли. Лучший способ убедиться в этом - выйти и снова войти в систему.

Опция 1

После того, как вы измените PATH с GUI, закройте и снова откройте окно консоли.

Это работает, потому что только программы, запущенные после изменения, увидят новый 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,

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

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

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

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

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

Заметки:

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

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

PATH

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

PATH %PATH%;C:\xampp\php

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

PATH ;

Обновить

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

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

echo %YOUR_ENV_VARIABLE%

В этом веке PowerShell я бы редактировал PATH так:

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

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

[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")

В сценарии 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")
}

Безопасный SETX

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

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

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

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

Страница SETX ss64 имеет несколько очень хороших примеров. Важно, что это указывает на то, где ключи реестра для 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. Не совсем верно

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

set PATH=%PATH%;%CD%

редактировать: согласно комментарию - работает со стандартным Windows CMD, но не в PowerShell.

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

Что если вы неправильно наберете путь, используя setx? Лучший способ - просто через панель управления пользовательского интерфейса Windows-> Все элементы панели управления-> Система-> Расширенные настройки системы-> Переменные среды

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

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

попытайся! его безопасно использовать и здорово!

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

Использовать патч от gtools

он делает вещи интуитивно, например:

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

это и показывает результаты без необходимости создавать новый cmd!

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

Переопределить уже включенные исполняемые файлы;

установите PATH=C:\xampp\php;%PATH%;

Проверка приведенных выше предложений в Windows 10 LTSB и краткий обзор контуров "справки" (которые можно просмотреть при вводе команды /? В cmd) привели меня к выводу, что команда PATH изменяет системную переменную среды Значения пути только для текущего сеанса, но после перезагрузки все значения сбрасываются к значениям по умолчанию - так же, как они были до использования команды PATH.

С другой стороны, использование команды SETX с административными привилегиями намного эффективнее, оно корректно изменяет эти значения (или, по крайней мере, до следующего использования этой команды или до следующего манипулирования этими значениями с помощью графического интерфейса пользователя...).

Но для ясности я подумал, что поделиться здесь лучшим использованием синтаксиса SETX, которое сработало для меня, может помочь кому-нибудь однажды:

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

где следует избегать любого знака равенства '=', и не беспокойтесь о пробелах! нет необходимости вставлять больше кавычек для пути, который содержит пробелы внутри него - знак разделения ';' сделать работу.

Ключевое слово PATH, которое следует за SETX, определяет, какой набор значений следует изменить среди возможных значений переменных системной среды, а%PATH% (слово PATH, окруженное знаком процента) внутри кавычек, говорит ОС покинуть существующий Значения PATH, как они есть, и добавьте следующий путь (тот, который следует за знаком разделения ';') к существующим значениям.

НТН

Ниже решение отлично работало

попробуйте команду ниже в своем терминале Windows.

C:>setx PATH "C:\myfolder;%PATH%"

УСПЕХ: указанное значение сохранено.

вы можете сослаться на больше здесь

Что касается пункта 2, я использую простой командный файл, который заполняет PATH или другие переменные среды для меня. Поэтому по умолчанию нет загрязнения переменных среды. Этот командный файл доступен везде, поэтому я могу набрать:

c:\>mybatchfile
-- here all env. are available
c:\>php file.php

Вы можете проверить более подробную информацию об этом простом подходе здесь.

Используйте эти команды в оболочке bash в Windows, чтобы добавить новое местоположение в переменную PATH.

      PATH=$PATH:/path/to/mydir

или добавьте это местоположение

      PATH=/path/to/mydir:$PATH

В вашем случае, например,

      PATH=$PATH:C:\xampp\php

Вы можете повторить $PATH чтобы увидеть переменную PATH в оболочке

Лучшая альтернатива панели управления - использовать эту бесплатную программу от sourceforge под названием Pathenator:

https://sourceforge.net/projects/pathenator/

Тем не менее, он работает только для системы с Dot.Net 4.0 или выше, такой как Windows 7,8 или 10.

В командной строке вы указываете Cmd использовать командную строку Explorer, предварительно добавив в нее start,

Так start Yourbatchname,

Обратите внимание, вы должны зарегистрироваться, как будто его имя batchfile.exe,

Программы и документы могут быть добавлены в реестр, поэтому ввод их имени без указания пути в диалоговом окне "Пуск - запуск" или ярлык позволяет Windows найти их.

Это общий reg файл. Скопируйте строки ниже в новый текстовый документ и сохраните его как anyname.reg. Отредактируйте его с вашими программами или документами.

В путях используйте \ для разделения имен папок в ключевых путях, так как regedit использует один \ для разделения имен ключей. Все рег файлы начинаются с REGEDIT4. Точка с запятой превращает строку в комментарий. Символ @ означает присвоение значения ключу, а не именованному значению.

Файл не должен существовать. Это можно использовать, чтобы настроить Word.exe для открытия Winword.exe.

Typing start batchfile запустит iexplore.exe.

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\\Program Files\\Microsoft Office\\Office\\"

Вам уже рассказали о пути в другом ответе. Также см doskey /? для макросов cmd (они работают только при наборе текста).

Вы можете запускать команды запуска для CMD. Из Windows Recource Kit Технический справочник

AutoRun

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

Описание

Содержит команды, которые выполняются при каждом запуске Cmd.exe.

Как открыть окно переменных среды из диалогового окна cmd.exe/Run...

  • SystemPropertiesAdvancedи нажмите «Переменные среды», без UAC
  • rundll32 sysdm.cpl,EditEnvironmentVariablesпрямой, может вызвать UAC

Через Можно ли запустить инструмент переменных среды в Windows напрямую?на serverfault.com.

Как открыть окно переменных среды из Проводника

  1. Щелкните правой кнопкой мыши «Этот компьютер».
  2. Нажмите «Свойства»
  3. На левой панели всплывающего окна нажмите «Дополнительные параметры системы».
  4. Нажмите на вкладку «Дополнительно»
  5. Нажмите кнопку «Переменные среды» в нижней части окна.

Вы также можете искать Variablesв поиске StartMenu.

Справочные изображения того, как выглядит окно переменных среды :

Windows 10

с помощью

Windows 7

с помощью

Windows XP

с помощью

Каким бы тривиальным это ни было, мне пришлось перезапустить Windows, когда я столкнулся с этой проблемой.

Я использую Windows 7 x64. Я вручную обновил системную переменную PATH. Это сработало, если я запустил cmd.exe из меню статистики. Но если я наберу "cmd" в адресной строке проводника Windows, кажется, что он загружает PATH из другого места, что не имеет моих ручных изменений.

(Чтобы не сомневаться - да, я пару раз закрыл и перезапустил cmd перед перезапуском, и это не помогло.)

Если вы запустите команду cmd, он обновит все системные переменные для этого командного окна.

В моем случае я просто скопировал путь из диалогового окна свойств в Windows, и он содержал в тексте пустой символ или что-то еще, поэтому он не был распознан. Я вставил текст пути в обычный текстовый файл и удалил все по бокам, и моя переменная была распознана.

  1. Я установил PHP в то время. Извлеченный php-7***. Zip в C: \ php \
  2. Сделайте резервную копию моей текущей переменной среды PATH: запустите cmdи выполните команду: path >C:\path-backup.txt

  3. Получить мое текущее значение пути в файл C:\path.txt (таким же образом)

  4. Измените path.txt (конечно, длина моего пути больше 1024 символов, Windows работает несколько лет)
    • Я удалил дубликаты путей, например, 'C: \ Windows; или C:\Windows\System32; или C: \ Windows \ System32 \ Wbem; - У меня есть дважды.
    • Удалите также пути к удаленным программам. Пример: C: \ Program Files \ NonExistSoftware;
    • Таким образом, длина моего пути < 1024:)))
    • в конце строки пути добавьте;C:\php\
    • Скопируйте значение пути только в буфер с двойными кавычками! Пример: "C:\Windows;****;C:\php\" Нет PATH= должно быть там!!!
  5. Откройте Windows PowerShell от имени администратора.
  6. Команда запуска:

setx path "Here you should insert string from buffer (new path value)"

  1. Перезапустите свой терминал (я использую "Far manager") и проверьте: php -v

В Windows 10 я смог найти переменную среды set path и получил следующие инструкции:

  1. На рабочем столе щелкните правой кнопкой мыши в самом нижнем левом углу экрана, чтобы открыть меню задач опытного пользователя.
  2. В меню задач опытного пользователя щелкните Система.
  3. В окне "Настройки" прокрутите вниз до раздела "Связанные настройки" и щелкните ссылку "Информация о системе".
  4. В окне "Система" щелкните ссылку "Дополнительные параметры системы" на левой панели навигации.
  5. В окне "Свойства системы" перейдите на вкладку "Дополнительно", затем нажмите кнопку "Переменные среды" в нижней части этой вкладки.
  6. В окне "Переменные среды" (изображенном ниже) выделите переменную "Путь" в разделе "Системные переменные" и нажмите кнопку "Изменить". Добавьте или измените линии пути путями, к которым компьютер должен получить доступ. Каждый отдельный каталог разделяется точкой с запятой, как показано ниже:

C:\Program Files;C:\Winnt;C:\Winnt\System32

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

Другие вопросы по тегам