Добавление каталога в переменную среды 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
У меня есть два вопроса:
- Почему это случилось? Что-то я не так сделал?
- Кроме того, как мне добавить каталоги в мой
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%
содержит системный путь с добавленным пользовательским путем
Предупреждения
- Сделайте резервную копию вашего
PATH
-SETX
будет усекать ваш мусор длиннее 1024 символов - Не звони
SETX %PATH%;xxx
- добавляет системный путь в пользовательский путь - Не звони
SETX %PATH%;xxx /M
- добавляет пользовательский путь в системный путь - Чрезмерное использование пакетного файла может вызвать слепоту 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
попытайся! его безопасно использовать и здорово!
Использовать патч от 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.
Как открыть окно переменных среды из Проводника
- Щелкните правой кнопкой мыши «Этот компьютер».
- Нажмите «Свойства»
- На левой панели всплывающего окна нажмите «Дополнительные параметры системы».
- Нажмите на вкладку «Дополнительно»
- Нажмите кнопку «Переменные среды» в нижней части окна.
Вы также можете искать
Variables
в поиске StartMenu.
Справочные изображения того, как выглядит окно переменных среды :
Windows 10
Windows 7
Windows XP
Каким бы тривиальным это ни было, мне пришлось перезапустить Windows, когда я столкнулся с этой проблемой.
Я использую Windows 7 x64. Я вручную обновил системную переменную PATH. Это сработало, если я запустил cmd.exe из меню статистики. Но если я наберу "cmd" в адресной строке проводника Windows, кажется, что он загружает PATH из другого места, что не имеет моих ручных изменений.
(Чтобы не сомневаться - да, я пару раз закрыл и перезапустил cmd перед перезапуском, и это не помогло.)
Если вы запустите команду cmd
, он обновит все системные переменные для этого командного окна.
В моем случае я просто скопировал путь из диалогового окна свойств в Windows, и он содержал в тексте пустой символ или что-то еще, поэтому он не был распознан. Я вставил текст пути в обычный текстовый файл и удалил все по бокам, и моя переменная была распознана.
- Я установил PHP в то время. Извлеченный php-7***. Zip в C: \ php \
Сделайте резервную копию моей текущей переменной среды PATH: запустите
cmd
и выполните команду:path >C:\path-backup.txt
Получить мое текущее значение пути в файл C:\path.txt (таким же образом)
- Измените 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= должно быть там!!!
- Откройте Windows PowerShell от имени администратора.
- Команда запуска:
setx path "Here you should insert string from buffer (new path value)"
- Перезапустите свой терминал (я использую "Far manager") и проверьте:
php -v
В Windows 10 я смог найти переменную среды set path и получил следующие инструкции:
- На рабочем столе щелкните правой кнопкой мыши в самом нижнем левом углу экрана, чтобы открыть меню задач опытного пользователя.
- В меню задач опытного пользователя щелкните Система.
- В окне "Настройки" прокрутите вниз до раздела "Связанные настройки" и щелкните ссылку "Информация о системе".
- В окне "Система" щелкните ссылку "Дополнительные параметры системы" на левой панели навигации.
- В окне "Свойства системы" перейдите на вкладку "Дополнительно", затем нажмите кнопку "Переменные среды" в нижней части этой вкладки.
- В окне "Переменные среды" (изображенном ниже) выделите переменную "Путь" в разделе "Системные переменные" и нажмите кнопку "Изменить". Добавьте или измените линии пути путями, к которым компьютер должен получить доступ. Каждый отдельный каталог разделяется точкой с запятой, как показано ниже:
C:\Program Files;C:\Winnt;C:\Winnt\System32
В первый раз, когда я его искал, сразу же появилось окно свойств системы. После этого я нашел приведенную выше инструкцию.