Перейти к содержимому

Как изменить path в windows 10

  • автор:

Невозможно изменить переменные пользовательской среды в диалоговом окне «Свойства системы», если вы выполните вход с помощью стандартной учетной записи пользователя.

В этой статье описано решение проблемы, из-за которого невозможно изменить переменные пользовательской среды в диалоговом окне «Свойства системы».

Применимо к: Windows Vista
Исходный номер базы знаний: 931715

Симптомы

При входе с помощью стандартной учетной записи пользователя в Windows Vista изменить переменные пользовательской среды в диалоговом окне «Свойства системы» невозможно.

Например, если вы пытаетесь получить доступ к диалоговом окне «Свойства системы» , щелкнув «Дополнительные параметры системы» в элементе «Система» панель управления, вам будет предложено ввести учетные данные учетной записи администратора. Если ввести учетные данные для учетной записи администратора, переменные среды пользователя, к которых можно получить доступ, будут доступны только для этой учетной записи администратора.

Причина

Эта проблема возникает из-за повышенной безопасности в Windows Vista. Метод, который необходимо использовать для изменения переменных пользовательской среды в Windows Vista, отличается от более ранних версий Microsoft Windows.

Решение

Чтобы устранить эту проблему, измените переменные среды пользователя с помощью элемента «Учетные записи пользователей» в панель управления. Вы можете выполнить следующие действия:

  1. Нажмите кнопку «Пуск», введите «Учетные записи» в поле «Пуск » и выберите «Учетные записи пользователей » в разделе «Программы». Если вам будет предложено ввести пароль администратора или подтверждение, введите пароль или нажмите кнопку » Разрешить».
  2. В диалоговом окне «Учетные записи пользователей» щелкните » Изменить переменные среды» в разделе «Задачи».
  3. Внесите необходимые изменения в переменные среды пользователя для учетной записи пользователя и нажмите кнопку «ОК «.

Обратная связь

Были ли сведения на этой странице полезными?

about_Environment_Variables

Описывает, как получить доступ к переменным среды и управлять ими в PowerShell.

Переменные среды хранят данные, используемые операционной системой и другими программами. PowerShell создает следующие переменные среды:

  • POWERSHELL_TELEMETRY_OPTOUT
  • POWERSHELL_DISTRIBUTION_CHANNEL
  • POWERSHELL_UPDATECHECK
  • PSExecutionPolicyPreference
  • PSModulePath
  • PSModuleAnalysisCachePath
  • PSDisableModuleAnalysisCacheCleanup

Полные описания этих переменных см. в переменных среды PowerShell этой статьи.

Подробное описание

PowerShell может получить доступ к переменным среды и управлять ими в любой из поддерживаемых платформ операционной системы. Поставщик среды PowerShell позволяет получать, добавлять, изменять, очищать и удалять переменные среды в текущей консоли.

В отличие от Windows, имена переменных среды в macOS и Linux чувствительны к регистру. Например, $env:Path это $env:PATH разные переменные среды на платформах, отличных от Windows.

Переменные среды, в отличие от других типов переменных в PowerShell, всегда хранятся в виде строки и не могут быть пустыми. Кроме того, в отличие от других переменных, они наследуются дочерними процессами, такими как локальные фоновые задания и сеансы, в которых выполняются члены модуля. Это делает переменные среды хорошо подходят для хранения значений, необходимых как в родительских, так и в дочерних процессах.

В Windows переменные среды можно определить в трех область:

  • Область компьютера (или системы)
  • Область пользователя
  • Область процесса

Область процесса содержит переменные среды, доступные в текущем процессе или сеансе PowerShell. Этот список переменных наследуется от родительского процесса и создается из переменных в область компьютера и пользователя.

При изменении переменных среды в PowerShell изменение влияет только на текущий сеанс. Это поведение напоминает поведение Set команды в командной оболочке Windows и Setenv команде в средах на основе UNIX. Чтобы изменить значения в область machine или User, необходимо использовать методы класса System.Environment.

Чтобы внести изменения в переменные machine-область d, необходимо также иметь разрешение. Если вы пытаетесь изменить значение без достаточного разрешения, команда завершается ошибкой, и PowerShell отображает ошибку.

PowerShell предоставляет несколько различных методов использования переменных среды и управления ими.

  • Синтаксис переменной
  • Командлеты поставщика среды и элемента
  • Класс .NET System.Environment

Использование синтаксиса переменной

Можно отобразить и изменить значения переменных среды с помощью следующего синтаксиса:

Например, чтобы отобразить значение переменной WINDIR среды:

$Env:windir 
C:\Windows 

В этом синтаксисе знак доллара ( $ ) указывает переменную, а имя диска ( Env: ) указывает переменную среды, за которой следует имя переменной ( windir ).

Можно создать и обновить значение переменных среды с помощью следующего синтаксиса:

Например, чтобы создать Foo переменную среды:

$Env:Foo = 'An example' 

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

"The 'Foo' environment variable is set to: $Env:Foo" $Env:Foo += '!' $Env:Foo 
The 'Foo' environment variable is set to: An example An example! 

Так как переменная среды не может быть пустой строкой, установка одной $null или пустой строки удаляет ее. Например:

$Env:Foo = '' $Env:Foo | Get-Member -MemberType Properties 
Get-Member : You must specify an object for the Get-Member cmdlet. At line:1 char:12 + $env:foo | Get-Member + ~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-Member], InvalidOperationException + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand 

Get-Member Возвращает ошибку, так как переменная среды была удалена. Вы увидите, что при использовании не возвращается ошибка при использовании в пустой строке:

'' | Get-Member -MemberType Properties 
 TypeName: System.String Name MemberType Definition ---- ---------- ---------- Length Property int Length

Дополнительные сведения о переменных в PowerShell см. в about_Variables .

Использование командлетов поставщика среды и элементов

Поставщик среды PowerShell предоставляет интерфейс для взаимодействия с переменными среды в формате, который похож на диск файловой системы. Он позволяет получать, добавлять, изменять, очищать и удалять переменные среды и значения в PowerShell.

Например, чтобы создать Foo переменную среды со значением Bar :

New-Item -Path Env:\Foo -Value 'Bar' 
Name Value ---- ----- Foo Bar 

Можно также скопировать переменную среды с Copy-Item помощью , задать значение переменной среды с Set-Item помощью списка переменных Get-Item среды и удалить переменную среды с Remove-Item помощью.

Copy-Item -Path Env:\Foo -Destination Env:\Foo2 -PassThru Set-Item -Path Env:\Foo2 -Value 'BAR' Get-Item -Path Env:\Foo* Remove-Item -Path Env:\Foo* -Verbose 
Name Value ---- ----- Foo2 Bar Name Value ---- ----- Foo2 BAR Foo Bar VERBOSE: Performing the operation "Remove Item" on target "Item: Foo2". VERBOSE: Performing the operation "Remove Item" on target "Item: Foo". 

Get-ChildItem Используйте командлет, чтобы просмотреть полный список переменных среды:

Get-ChildItem Env: 

Дополнительные сведения об использовании поставщика среды для управления переменными среды см. в about_Environment_Provider .

Использование методов System.Environment

Класс System.Environment предоставляет методы GetEnvironmentVariable и SetEnvironmentVariable для получения и изменения переменных среды.

В следующем примере создается новая переменная среды с Foo значением Bar , а затем возвращается его значение.

[Environment]::SetEnvironmentVariable('Foo','Bar') [Environment]::GetEnvironmentVariable('Foo') 

Переменную среды можно удалить с помощью метода SetEnvironmentVariable , указав пустую строку для значения переменной. Например, чтобы удалить Foo переменную среды, выполните следующие действия.

[Environment]::SetEnvironmentVariable('Foo','') [Environment]::GetEnvironmentVariable('Foo') 

Дополнительные сведения о методах класса System.Environment см. в разделе «Методы среды».

Сохранение изменений в переменных среды

В Windows существует три метода для постоянного изменения переменной среды: настройка их в профиле с помощью метода SetEnvironmentVariable и использования System панель управления.

Сохранение переменных среды в профиле

Любая переменная среды, которую вы добавляете или изменяете в профиле PowerShell, доступна в любом сеансе, который загружает профиль. Этот метод работает для любой версии PowerShell на любой поддерживаемой платформе.

Например, чтобы создать CompanyUri переменную среды и обновить Path переменную среды, чтобы включить C:\Tools папку, добавьте следующие строки в профиль PowerShell:

$Env:CompanyUri = 'https://internal.contoso.com' $Env:Path += ';C:\Tools' 

В Linux или macOS двоеточие () используется вместо запятой( : ; ) для разделения нового пути от пути, который предшествует ему в списке.

Путь к профилю PowerShell можно получить с помощью автоматической переменной $PROFILE . Дополнительные сведения о профилях см. в about_Profiles .

Сохранение переменных среды с помощью SetEnvironmentVariable

В Windows можно указать область для метода SetEnvironmentVariable в качестве третьего параметра, чтобы задать переменную среды в этой область. Компьютер и пользователь область сохраняются вне текущего процесса, что позволяет сохранить новую или измененную переменную среды.

Например, чтобы сохранить новую переменную Foo среды со значением Bar на компьютере область:

[Environment]::SetEnvironmentVariable('Foo', 'Bar', 'Machine') 

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

[Environment]::SetEnvironmentVariable('Foo', '', 'Machine') 

Сохранение переменных среды с помощью системных панель управления

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

Чтобы внести постоянное изменение в переменную среды в Windows с помощью System панель управления:

  1. Откройте панель управления системы.
  2. Выберите Система.
  3. Выберите «Расширенная система» Параметры.
  4. Перейдите на вкладку «Дополнительно «.
  5. Выберите переменные среды. .
  6. Внесите нужные изменения.

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

Функции PowerShell могут использовать переменные среды для хранения пользовательских настроек. Эти переменные работают как переменные предпочтения, но они наследуются дочерними сеансами сеансов, в которых они созданы. Дополнительные сведения о переменных предпочтениях см. в about_Preference_Variables .

Переменные среды, в которых хранятся настройки, включают:

  • POWERSHELL_TELEMETRY_OPTOUT Чтобы отказаться от телеметрии, задайте для переменной true среды значение , yes или 1 . Дополнительные сведения см. в about_Telemetry .
  • POWERSHELL_DISTRIBUTION_CHANNEL Начиная с PowerShell 7.2, эта переменная среды устанавливается пакетами установщика для записи метода и источника установки для PowerShell. Эти сведения включаются в данные телеметрии, отправляемые корпорации Майкрософт. Пользователи не должны изменять это значение.
  • POWERSHELL_UPDATECHECK Настроить уведомления об обновлениях можно с помощью переменной среды POWERSHELL_UPDATECHECK . Поддерживаются следующие значения:
    • Off Отключает функцию уведомления об обновлении
    • Default совпадает с определением POWERSHELL_UPDATECHECK :
      • В общедоступных выпусках выводятся уведомления об обновлениях для общедоступных выпусков.
      • В предварительных выпусках и релизах-кандидатах выводятся уведомления об обновлениях для общедоступных и предварительных выпусков.

      Дополнительные сведения см. в about_Update_Notifications .

      • Запустите сеанс из командной строки с помощью параметра ExecutionPolicy , чтобы задать политику выполнения для сеанса.
      • Воспользуйтесь командлетом Set-ExecutionPolicy . Используйте параметр Scope со значением Process . Дополнительную информацию см. в разделе about_Execution_Policies.
      • Расположения на уровне системы: эти папки содержат модули, которые поставляется с помощью PowerShell. Модули хранятся в расположении $PSHOME\Modules . Кроме того, это расположение, в котором установлены модули управления Windows.
      • Установленные пользователем модули: это модули, установленные пользователем. Install-Module имеет параметр Scope, позволяющий указать, установлен ли модуль для текущего пользователя или для всех пользователей. Дополнительные сведения см. в разделе Install-Module.
        • В Windows расположение область для конкретного пользователя CurrentUser является папкой $HOME\Documents\PowerShell\Modules . Расположение область $env:ProgramFiles\PowerShell\Modules AllUsers.
        • В системах, отличных от Windows, расположение пользовательского область CurrentUser — $HOME/.local/share/powershell/Modules это папка. Расположение область /usr/local/share/powershell/Modules AllUsers.

        Кроме того, программы установки, устанавливающие модули в других каталогах, например каталог Program Files, могут добавлять их расположения к значению $env:PSModulePath .

        Дополнительные сведения см. здесь: about_PSModulePath.

        • Windows PowerShell 5.1: $env:LOCALAPPDATA\Microsoft\Windows\PowerShell .
        • PowerShell 6.0 и выше: $env:LOCALAPPDATA\Microsoft\PowerShell
        • По умолчанию, отличный от Windows: ~/.cache/powershell

        Имя файла по умолчанию для кэша ModuleAnalysisCache . При установке нескольких экземпляров PowerShell имя файла включает шестнадцатеричный суффикс, чтобы для каждой установки существовал уникальный имя файла.

        Если обнаружение команд работает неправильно, например IntelliSense показывает команды, которые не существуют, можно удалить файл кэша. Кэш повторно создается при следующем запуске PowerShell.

        Чтобы изменить расположение кэша по умолчанию, присвойте значение переменной среды перед запуском PowerShell. Изменения в этой переменной среды влияют только на дочерние процессы. Значение должно быть полным путем (включая имя файла), на создание и запись файлов по которому у среды PowerShell есть разрешение.

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

        # `NUL` here is a special device on Windows that can't be written to, # on non-Windows you would use `/dev/null` $env:PSModuleAnalysisCachePath = 'NUL' 

        Это задает путь к устройству NUL . PowerShell не может записывать данные в путь, но не возвращается ошибка. Вы можете увидеть ошибки, сообщаемые с помощью трассировщика:

        Trace-Command -PSHost -Name Modules -Expression

        Другие переменные среды, используемые PowerShell

        Сведения о пути

        • PATH Переменная $env:PATH среды содержит список расположений папок, которые операционная система ищет исполняемые файлы. В Windows список расположений папок разделен символом с запятой ( ; ). На платформах, отличных от Windows, двоеточие ( : ) отделяет расположения папок в переменной среды.
        • PATHEXT Переменная $env:PATHEXT содержит список расширений файлов, которые Windows считает исполняемыми файлами. Если файл скрипта с одним из перечисленных расширений выполняется из PowerShell, скрипт выполняется в текущем сеансе консоли или терминала. Если расширение файла не указано, скрипт запускается в новом сеансе консоли. Чтобы убедиться, что скрипты для другого языка сценариев выполняются в текущем сеансе консоли, добавьте расширение файла, используемое языком сценариев. Например, чтобы запустить скрипты Python в текущей консоли, добавьте .py расширение в переменную среды. Для поддержки .py расширения в виде исполняемого файла необходимо зарегистрировать расширение с помощью ftype командной оболочки CMD и assoc команд. PowerShell не имеет прямого метода регистрации обработчика файлов. Дополнительные сведения см. в документации по команде ftype . Скрипты PowerShell всегда начинаются в текущем сеансе консоли. Вам не нужно добавлять .PS1 расширение.
        • Переменные XDG На платформах, отличных от Windows, PowerShell использует следующие переменные среды XDG, определенные спецификацией базового каталога XDG.
          • XDG_CONFIG_HOME
          • XDG_DATA_HOME
          • XDG_CACHE_HOME

          Функции терминала

          Начиная с PowerShell 7.2, можно использовать следующие переменные среды для управления функциями виртуального терминала, такими как escape-последовательности ANSI, которые цветуют выходные данные. Поддержку escape-последовательностей ANSI можно отключить с помощью переменных среды TERM или NO_COLOR.

          • ТЕРМИН Следующие значения $env:TERM изменяют поведение следующим образом:
            • dumb -Задает $Host.UI.SupportsVirtualTerminal = $false
            • xterm-mono -Задает $PSStyle.OutputRendering = PlainText
            • xtermm -Задает $PSStyle.OutputRendering = PlainText

            См. также

            • about_Environment_Provider
            • about_Profiles
            • about_Variables
            • Методы среды

            Совместная работа с нами на GitHub

            Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

            Как добавить путь до … в переменную PATH

            В различных руководствах и документациях часто встречается пункт «добавьте путь до чего либо в переменную PATH». Что это за переменная и как в нее что-то добавить описано ниже, в этой заметке.

            Что такое переменная PATH и для чего она нужна?

            Если коротко, то PATH это такая переменная, с помощью нее операционная система ищет исполняемые объекты, которые вы пытаетесь вызвать в командной строке.

            Другими словами, PATH позволяет запускать исполняемые файлы, без указания их точного местоположения на диске. Например, после установки Python на Windows, для выполнения скрипта Питона нам достаточно в командной строке набрать:

            Нам не пришлось указывать точного пути до интерпретатора Питона (в моем случае C:\Users\Alex\AppData\Local\Programs\Python\Python37-32\python.exe) как раз из-за установленной переменной PATH.

            соответствующую программу. Этим можно воспользоваться в своих целях двумя способами:

            Как добавить PHP в системные переменные среды?

            Для примера добавим PHP в переменную PATH.

            У меня на компьютере интерпретатор php располагается в каталоге C:\xampp\php72, поэтому чтобы выполнить php скрипт в командной строке, мне нужно ввести:

            Но согласитесь, гораздо удобней так:

            К тому же некоторые программы, например IDE будут автоматически «понимать» где расположен интерпретатор php.

            Итак, чтобы добраться до настроек переменной PATH, нам сначала нужно открыть Панель управления Windows, поскольку Микрософт постоянно меняет ее положение, проще всего найти ее через поиск:

            Далее нужно выбрать Система -> Дополнительные параметры системы.

            Дополнительные параметры системы Windows 10

            В последних версия Windows 10 Дополнительные параметры системы открываются по такому пути:

            Сначала открываете Все параметры -> Система, далее слева внизу выбираете О программе и справа в списке будет нужный пункт Дополнительные параметры системы.

            Дополнительные параметры системы Windows 10

            В открывшемся окне Свойства системы нужно выбрать вкладку Дополнительно и внизу будет кнопка Переменные среды.

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

            Выбираем переменную среды Path и нажимаем Изменить. После этого нажимаем кнопку Создать и вводим пусть до папки, где расположен наш интерпретатор PHP, в моем случае C:\xampp\php72.

            Далее везде нажимаем ОК, все, переменная среды для PHP сохранена.

            Теперь, если перезапустить командную строку, можно выполнять php скрипты не указывая полного пусти к интерпретатору.

            Категории

            Свежие записи

            • Таблицы в админке WordPress (часть 1)
            • Импорт/экспорт Linux WSL
            • Не печатаются заглавные буквы в PowerShell
            • 1С-Битрикс: Ошибка авторизации! Срок действия пароля истек, необходимо сменить пароль.
            • Несколько конфигураций для проекта Django
            • Django inclusion_tag с разными шаблонами

            Системная переменная PATH Windows

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

            Искать по всему жёсткому диску было бы слишком долго, поэтому поиск осуществляется только по некоторым директориям.

            Список этих особых директорий хранится в системной переменной PATH.

            Пример

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

            Без предварительной подготовки ввод Firefox в консоль выдаст ошибку.

            ‘firefox’ is not recognized as an internal or external command, operable program or batch file.

            Чтобы решить эту проблему нужно добавить директорию с испоняемым файлом firefox в PATH

            Добавить директорию в PATH

            Быстрый способ перейти к редактированию PATH — нажать клавишу Win и ввести в поиск env

            Env с сайта www.eth1.ru

            Правый клик на Этот Компьютер (This PC) → Свойства (Properties)

            Мой компьютер Свойства изображение с сайта www.eth1.ru

            Дополнительные параметры системы (Advanced system settings)

            Control Panel - All Control Panel Items - System изображение с сайта www.eth1.ru

            Дополнительно (Advanced) → Переменные среды (Environment Variables)

            Environment Variables изображение с сайта www.eth1.ru

            Если хотите менять для всей системы, то в окошке «Переменные среды» (System Variables) найдите строку PATH в блоке «Системные переменные» (System variables) выделите кликом и нажмите кнопку «Изменить. » (Edit. )

            Если хотите менять только для своего пользователя, то делайте это в блоке «Переменные среды пользователя %USERNAME%» (User variables for %USERNAME%)

            Environment Variables изображение с сайта www.eth1.ru

            Создайте новый путь (New)

            Path Environment Variable изображение с сайта www.eth1.ru

            Введите адрес директории в которой лежит нужная программа. В нашем случае это

            C:\Program Files (x86)\Mozilla Firefox

            Path Environment Variable изображение с сайта www.eth1.ru

            Перезапустите консоль или открываем новую и пишем там firefox.

            Браузер должен запуститься.

            Изучить содержимое PATH

            В PowerShell достаточно выполнить

            Name Value —- —— Path C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPo.

            В cmd.exe посмотреть список переменных окружения можно выполнив команду set без параметров.

            Выдача содержит системные переменные и переменные пользователя а также дополнительную информацию. Содержимое PATH выделено зелёным.

            результат выдачи команды set без параметров

            Ошибки

            -bash: syntax error near unexpected token `(‘

            Скорее всего Вы пытаетесь добавить в unix PATH адрес из Windows, c пробелами, скобками и так далее.

            andrey@olegovich-10:/usr/share$ export PATH=/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath_target_1128437:$PATH

            -bash: syntax error near unexpected token `(‘

            Для решения этой проблемы Вам нужно экранировать пробелы и скобки. Если импортируется много путей и ввод очень длинный — немного проще записать PATH=$PATH:/путь , если Вам подходит запись в конец.

            Также нужно помнить, что все лишние пробелы сломают импорт — для проверки можно сделать весь скрипт в одну строку в текстовом редакторе.

            Также стоит помнить, что если Вы работаете в bash под Windows , то переменные окружения нужно задавать через Windows.

            andrey@olegovich-10:/usr/share$ export PATH=$PATH:/mnt/c/Program\ Files\ \(x86\)/Common\ Files/Oracle/Java/javapath_target_1128437

            Postgesql

            Приведу пример для использования psql из WSL и Git Bash — это может пригодиться если Вы хотите временно добавить путь к psql в PATH чтобы запустить Postrgres скрипт.

            В моём случае psql.exe находится в папке C:\Program Files\PostgreSQL\12\bin

            В PowerShell можно проверить наличие пути до Postgres с помощью Select-String

            echo $Env:Path | Select-String Postgres

            Добавить путь до Postgres в конец Path можно следующим образом

            $Env:Path += ‘;C:/Program Files/PostgreSQL/12/bin’

            Добавить в начало Path

            $Env:Path = ‘;C:/Program Files/PostgreSQL/12/bin’ + $Env:Path

            Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *