Работа с переменной среды окружения PATH
Переменная Path
является переменной среды окружения, при помощи которой ОС #Windows находит нужные приложения в терминале. Рассмотрим способы редактирования значений этой переменной.
Проще говоря, в переменную Path
можно добавлять пути к директориям приложений, для того чтобы при работе в терминале не прописывать полные пути к исполняемым файлам этих приложений. Например, в терминале, чтобы вызвать #Git и зафиксировать изменения нужно ввести C:\Apps\Git\git.exe commit -m 'bla-bla'
. Но если добавить значение C:\Apps\Git
в переменную Path
, то в терминале можно просто писать git.exe commit -m 'bla-bla'
, больше не нужно указывать полный путь к Git’у.
Уровни переменной Path
Существует два уровня переменной Path
:
- Системный - является глобальным и его значения доступны для каждого аккаунта пользователя.
- Пользовательский - работает в контексте конкретного аккаунта и содержит значения только этого пользователя. Под другим аккаунтом, переменная на пользовательском уровне может содержать другие значения.
В пределах аккаунта пользователя эти два уровня переменной Path
объединяют свои значения.
Добавление значений в переменную Path
Добавить свои значения в переменную Path
можно несколькими способами:
- Графический интерфейс ОС.
- Команда в CMD при помощи утилиты
setx
. - Команда в PowerShell.
Значения в переменной Path
разделяются символом ;
.
Так как я приверженец работы в терминале и считаю, что каждый администратор должен уметь работать с командной строкой, то привожу только два последних способа.
Командная строка CMD
Управление переменными среды окружения в #CMD происходит при помощи утилиты setx
.
Системный уровень
Чтобы добавить свои значения в переменную Path
на системном уровне, необходимо указать ключ /m
:
Ни в коем случае нельзя прописывать в setx
свои значения БЕЗ вызова переменной Path
: при такой команде утилита setx
обнулит все существующие значения в Path
и запишет указанные вами. А значения, добавленные программами, пропадут.
Правильная команда должны быть такой:
Здесь мы заранее вызываем переменную Path
конструкцией %Path%
, которая добавит существующие значения к вашим и всё это дело пропишется утилитой setx
обратно в Path
.
Необходимости в скрипте, который добавляет значения в переменную Path
на системном уровне, нет. Но я всё же его написал, пусть будет.
|
|
В переменной pathArray
указывается массив из путей, которые необходимо добавить в Path
на системном уровне.
Пользовательский уровень
Добавить свои значения в переменную Path
на пользовательском уровне:
Но есть одна особенность: так как переменная Path
объединяет значения системного и пользовательского уровней, то при такой команде, утилита setx
пропишет в Path
пользовательского уровня все значения из системного. Таким образом, получится дублирование содержимого Path
системного уровня в пользовательском. Это не критично, но можно сделать более элегантно…
Для того, чтобы обойти вышеуказанную особенность, необходимо написать скрипт, который будет при вызове переменной Path
вырезать из неё значения системного уровня. Собственно, скрипт я написал.
|
|
В переменной pathArray
указывается массив из путей, которые необходимо добавить в Path
на пользовательском уровне. При этом, добавление значений из системного уровня не произойдёт. Наша переменная Path
пользовательского уровня останется чистенькой и красивой.
Терминал PowerShell
В #PowerShell для управления переменными окружения существуют методы:
[Environment]::GetEnvironmentVariables()
- получение значения переменной среды окружения.[Environment]::SetEnvironmentVariable()
- установка значения переменной среды окружения.
Системный уровень
Для добавления значений в переменную Path
на системном уровне, я написал небольшой скрипт.
|
|
Вызов скрипта осуществляется следующим образом:
В параметре -P
указываются значения, которые необходимо добавить в переменную Path
системного уровня.
Пользовательский уровень
А здесь скрипт, который отвечает за добавление в переменную Path
значений на пользовательском уровне.
|
|
Вызов скрипта осуществляется следующим образом:
В параметре -P
указываются значения, которые необходимо добавить в переменную Path
пользовательского уровня.
Общий скрипт
Не знаю, почему я сразу не написал общий скрипт для всех уровней… Решил под завершение статьи реализовать подобную штуку.
|
|
Вызывается скрипт обычным способом:
Но отличается от выше приведённых скриптов дополнительным параметром -T
, который указывает уровень переменной Path
и может принимать следующие значения:
Machine
- для системного уровня.User
- для пользовательского уровня.
Категории
Смотрите также
- Дефрагментация в ОС Windows
- Автоматическая настройка Windows Server 2022 под рабочую станцию
- Восстановление доверительных отношений между PC и Active Directory
- Изменение порта RDP
- PowerShell: Полезные функции
- PowerShell: Стирание диска
- PowerShell: Сжатие видео при помощи FFmpeg
- PowerShell: Определение разрядности ОС Windows
- PowerShell Vault
- Установка сертификата НУЦ Минцифры