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

402

Я пытаюсь добавить C:\xampp\php в системную PATH среды 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 используя консоль (и программно, с командным файлом)?
  • 31
    Это по теме, потому что это вопрос о «инструментах, которые обычно используют программисты». Если вы разрабатываете для Windows, и вам никогда не нужно было изменять PATH, я удивлен. Чтобы удовлетворить желание быть связанным с программированием, я выделил то, на что указал ответ с наибольшим количеством голосов: Вы можете сделать это программно через консоль (или через пакетный файл).
  • 1
    спасибо за обзор @ GeorgeStocker хорошо, да, я сделал это программно, но у меня просто не было идеи, что мне нужно повторно войти после применения изменений в сеансе консоли. (и я думаю, что это только в моем случае), но ответ, получивший наибольшее количество голосов, обычно отвечает на вопрос
Показать ещё 2 комментария
Теги:
command-line
path
environment-variables

16 ответов

113
Лучший ответ

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

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

  • 9
    Хм, нет, это действительно только изменяет реестр. Должно быть немного очевидно сделать это в диалоговом окне панели управления вместо, скажем, командной строки с командой PATH. Вы можете легко наблюдать за тем, что он делает, с помощью Process Monitor компании SysInternals. Использование PATH - это не то же самое, любые внесенные вами изменения будут потеряны при закрытии консоли. SETX - это способ вносить постоянные изменения, такие как диалог.
  • 3
    Это правильно. Вам всегда нужно перезапустить сеанс консоли, прежде чем он подберет новые переменные среды.
Показать ещё 4 комментария
830

Опция 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.
  • 16
    @ Илья: Я имел в виду, чтобы вы открывали окно консоли после изменения пути в MyComputer-> Properties-> Advanced-> Env Variables-> Path. Некоторые приложения Windows будут распространять изменения переменных среды после их запуска, а некоторые - нет. WinXP cmd.exe нет.
  • 7
    если я выхожу из консоли и перезапускаюсь, мне нужно сбросить путь. Есть идеи, как сделать это изменение постоянным?
Показать ещё 8 комментариев
152

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

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

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

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

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

Заметки:

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

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

  • 7
    SETX /M path "%path%;C:\Program Files (x86)\Git\bin\" для установки значения PATH на уровне компьютера
  • 4
    Почему это не принятый ответ? Я предполагаю, что большинство людей хотело бы установить свой путь навсегда ...
Показать ещё 8 комментариев
55

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

PATH

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

PATH %PATH%;C:\xampp\php

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

PATH ;

Обновление

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

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

echo %YOUR_ENV_VARIABLE%
  • 1
    Это сработало :) как насчет этого! 'PATH% PATH%;' Я помню это
  • 10
    Я думаю, что это работает только для экземпляра сеанса cmd, используйте setx, чтобы изменить его навсегда
Показать ещё 4 комментария
30

В этом возрасте 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 script вам может потребоваться проверить наличие вашего 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")
}
  • 2
    для вызова SetEnvironmentVariable с параметром Machine вам нужно открыть PowerShell с правами администратора
  • 0
    горько разочаровывает, что эта «мощная» оболочка не распознает ни% userprofile%, ни $ userprofile ... но опять же, это окна, о которых мы говорим
Показать ещё 3 комментария
24

Безопасный SETX

Отклоните все комментарии в @Nafscript начальном ответе SETX.

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

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

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

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

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


1. Не строго верно

22

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

set PATH=%PATH%;%CD%

edit: в соответствии с комментарием - работает со стандартными окнами cmd, но не в powershell.

Для степенной оболочки эквивалент %CD% равен [System.Environment]::CurrentDirectory

  • 1
    Мой Powershell говорит, что% CD% не распознан.
  • 1
    хорошо в cmd.exe, хотя.
Показать ещё 1 комментарий
18

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

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

  • 1
    Это именно то, что сделал ОП. ( ... Поэтому я добавил этот каталог через «Мой компьютер»> «Свойства»> «Дополнительно»> «Переменные среды»> «Путь» ... ) Затем он спрашивает, почему он не отображается в его командной строке.
3
  • Изменения в командной строке
  • не будут постоянными, будут потеряны при закрытии консоли.
  • Путь работает так, как сначала на первом месте.
  • Возможно, вы захотите переопределить другие уже включенные исполняемые файлы. Например, если у вас уже есть другая версия на вашем пути, и вы хотите добавить другую версию без внесения постоянного изменения в путь, вы должны поместить каталог в начало команды.

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

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

2

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

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

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

  • 1
    В Windows 10 значительно улучшен редактор переменных Path Environment. Им понадобилось всего 20 лет, чтобы обойти это.
1

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

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

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

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

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

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

НТН

1

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

c:\>mybatchfile
-- here all env. are available
c:\>php file.php
  • 0
    Это важное различие между * nix-es и Windows. Пакет запускается в той же оболочке, и изменения в среде остаются после его выхода (в области сеанса). Однако это сокращает оба пути: пакетный файл может стереть вашу среду. (Кстати, на * NIX-эс вы просто должны source такого файла, как . mybatchfile ).
  • 0
    Привет @ grzegorz-gajos, я искал именно это, ваша ссылка для более подробной информации дает 404. Какие-нибудь альтернативы?
Показать ещё 1 комментарий
0
  1. Я установил PHP в то время. Извлеченный php-7 ***. Zip в C:\php \
  2. path >C:\path-backup.txt моей текущей переменной среды 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
0

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

0

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

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

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

0

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

So start Yourbatchname.

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

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

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

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

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

Ввод 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

Автозапуск

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню