[Windows]
Краткая справка: что такое переменные окружения?
Это пара Имя=Значение, которые хранят важные для системы и программ данные, например:
● Пути к установленным программам (PATH).
● Имя домашней папки пользователя (USERPROFILE).
● Имя компьютера (COMPUTERNAME).
Они бывают двух типов:
● Переменные пользователя: действуют только для вашей учетной записи.
● Системные переменные: действуют для всех пользователей на этом компьютере (требуют прав Администратора).
Способ 1: через графический интерфейс (самый наглядный)
Это классический способ, работающий во всех версиях Windows.
1.Откройте окно "Параметры среды" (Environment Variables).
● Вариант A (быстрый): нажмите Win + R, введите sysdm.cpl и нажмите Enter.
● Вариант B: щелкните правой кнопкой мыши по "Этот компьютер" → "Свойства" → в правом меню выберите "Дополнительные параметры системы".
2. В открывшемся окне нажмите кнопку "Переменные среды..." в нижней части.
3. Редактируйте переменные.
● Чтобы создать новую переменную: в верхней (пользовательские) или нижней (системные) секции нажмите кнопку "Создать...". Введите имя и значение.
● Чтобы изменить существующую: выделите переменную и нажмите "Изменить...".
● Чтобы удалить: выделите и нажмите "Удалить".
> Важнее всего: работа с переменной PATH
> PATH — это список папок, в которых Windows ищет исполняемые файлы. Когда вы вводите команду в командной строке (например, python или node), система просматривает все папки из PATH.
> При редактировании PATH вы увидите не простое поле, а список. Для добавления новой папки нажмите "Изменить..." → "Создать" и вставьте путь. Не перезаписывайте весь PATH, а только добавляйте новые строки, иначе можете сломать текущие настройки системы.
4. Примените изменения. Нажмите "ОК" во всех открытых окнах.
Способ 2: через Командную строку (CMD)
Быстрое решение для добавления или просмотра переменных в текущем сеансе.
● Просмотреть все переменные: set
● Просмотреть конкретную переменную: set ИМЯ (например, set PATH)
● Создать/Изменить переменную для ТЕКУЩЕГО сеанса:
set ИМЯ=Значение (например, set MY_VAR=Hello)
> Внимание! Такая переменная исчезнет после закрытия окна CMD.
● Добавить к существующей переменной (например, к PATH) для ТЕКУЩЕГО сеанса:
set PATH=%PATH%;C:\MyNewFolder
Способ 3: через PowerShell
Более мощный и современный аналог CMD.
● Просмотреть все переменные: Get-ChildItem Env:
● Просмотреть конкретную переменную: $env:ИМЯ (например, $env:USERNAME)
● Создать/Изменить переменную для ТЕКУЩЕГО сеанса:
$env:ИМЯ = "Значение" (например, $env:MY_VAR = "Hello")
● Добавить к существующей переменной для ТЕКУЩЕГО сеанса:
$env:PATH += ";C:\MyNewFolder"
Способ 4: через Панель управления (Windows 10/11)
Альтернативный путь к тому же графическому интерфейсу, описанному в Способе 1.
1. Откройте Панель управления.
2. Перейдите в "Система и безопасность" → "Система".
3. В левом меню выберите "Дополнительные параметры системы".
4. Дальше действуйте как в Способе 1 (кнопка "Переменные среды...").
Способ 5: через Параметры Windows (Windows 10/11)
Более современный, но менее функциональный интерфейс.
1. Откройте Параметры (Win + I).
2. Перейдите в "Система" → "О программе".
3. В связанных параметрах нажмите "Дополнительные параметры системы".
4. Дальше действуйте как в **Способе 1**.
Важные замечания и подводные камни
1. Изменения вступают в силу по-разному:
● Новые переменные, созданные через графический интерфейс, станут доступны после перезапуска всех открытых программ (включая проводник и терминалы). Иногда проще просто перезагрузить компьютер.
● Измененные существующие переменные (кроме PATH) обычно подхватываются новыми процессами.
● Чтобы применить изменения к уже открытому **Командной строке или PowerShell — нужно закрыть и открыть их заново.
2. Будьте осторожны с переменной PATH! Никогда не удаляйте стандартные пути Windows (например, C:\Windows\system32). Добавляйте только свои. Всегда используйте кнопку "Изменить" и добавляйте новые пути как новые строки.
3. Для постоянных изменений в скриптах используйте графический интерфейс или специальные команды PowerShell/CMD, которые меняют реестр. Способы 2 и 3 меняют переменные только для текущего сеанса.
Как добавить в PATH через CMD/PowerShell навсегда? (для продвинутых)
Это требует прав администратора и изменения реестра.
● В CMD (от Администратора):
setx /M ИМЯ "Значение"
Пример: setx /M PATH "%PATH%;C:\MyTool"
> Осторожно с setx и PATH! Команда имеет ограничение на длину строки и может обрезать ваш PATH. Лучше использовать графический интерфейс.
● В PowerShell (от Администратора):
[Environment]::SetEnvironmentVariable("ИМЯ", "Значение", "Machine") # Machine = для всех пользователей
[Environment]::SetEnvironmentVariable("ИМЯ", "Значение", "User") # User = для текущего пользователя
Итог:
● Для разовых действий в текущем окне терминала — используйте set (CMD) или $env: (PowerShell).
● Для постоянного изменения переменных (особенно PATH) — используйте графический интерфейс (sysdm.cpl). Это самый безопасный и надежный способ.
[Ubuntu]
В других операционных системах Linux используются аналогичные инструменты для изменения переменных окружения.
Редактирование переменных окружения в Ubuntu — фундаментальная задача. Подход здесь сильно отличается от Windows и основывается на работе с текстовыми файлами.
Краткая справка: как работают переменные в Linux/Ubuntu? Переменные окружения задаются парами ИМЯ=Значение. Они наследуются дочерними процессами от родительских.
Основные файлы конфигурации (оболочки - shell):
● ~/.bashrc — для пользовательских настроек в не-входных интерактивных оболочках bash. Выполняется при каждом открытии нового окна терминала.
● ~/.profile (или ~/.bash_profile) — для пользовательских настроек во входных оболочках. Выполняется при входе в систему (например, при логине через графический интерфейс).
● /etc/environment — системные настройки для всех пользователей (не зависит от shell).
● /etc/profile и файлы в /etc/profile.d/ — системные настройки для всех пользователей (для bash и других совместимых shell).
Способы установки переменных описаны далее.
Способ 1: временная установка (для текущей сессии)
Переменная будет действовать только в текущем окне терминала и исчезнет после его закрытия. Установить переменную:
export MY_VAR="my_value"
Добавить в PATH:
export PATH="$PATH:/path/to/your/directory"
Просмотреть переменную:
echo $MY_VAR
echo $PATH
Просмотреть все переменные:
env
.. или:
printenv
Способ 2: постоянная установка для пользователя (через ~/.bashrc)
Это самый частый и рекомендуемый способ для добавления в PATH и установки своих переменных.
1. Откройте файл ~/.bashrc в текстовом редакторе (например, nano):
nano ~/.bashrc
2. Добавьте в конец файла строки с вашими переменными:
# Установка простой переменной
export MY_APP_HOME="/opt/myapp"
# Добавление каталога в PATH
export PATH="$PATH:/path/to/your/directory"
# Пример для JDK
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
3. Сохраните файл и выйдите из редактора. В nano: Ctrl+X, затем Y для подтверждения, затем Enter.
4. Примените изменения в текущем терминале:
source ~/.bashrc
Или просто закройте текущий терминал и откройте новое окно терминала.
Почему ~/.bashrc? Он гарантированно выполняется при каждом открытии терминала, что удобно для переменных, нужных при работе в командной строке.
Способ 3: постоянная установка для пользователя (через ~/.profile)
Используйте этот файл, если переменная должна быть доступна и в графических приложениях (запущенных из меню, например).
1. Откройте файл ~/.profile:
nano ~/.profile
2. Добавьте переменные (так же, как и в .bashrc):
export MY_VAR="value_for_graphical_apps"
export PATH="$PATH:/path/to/gui/tool"
3. Сохраните файл и выйдите.
4. Для применения изменений нужно перезайти в систему (выйти и зайти заново), так как .profile читается при входе.
Способ 4: системные настройки для всех пользователей (через /etc/environment)
Используется для глобальных системных переменных, таких как глобальный PATH. Требует прав sudo.
1. Откройте файл от имени root:
sudo nano /etc/environment
2. Добавьте переменные. Важно: синтаксис без export!
# Простые переменные
MY_SYSTEM_VAR="system_value"
# Добавление в глобальный PATH (используйте двойные кавычки для всего значения)
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/snap/bin:/opt/my_global_tool"
3. Сохраните файл и выйдите.
4. Перезагрузите компьютер или перезайдите в систему для всех пользователей. Простой source не сработает.
Способ 5: системные настройки через /etc/profile.d/
Более удобный и безопасный способ для добавления системных скриптов, чем правка /etc/profile.
1. Создайте файл с расширением .sh в директории /etc/profile.d/:
sudo nano /etc/profile.d/my_custom_vars.sh
2. Добавьте переменные как в .bashrc (с export):
# Установка системной переменной
export GLOBAL_TOOL_PATH="/opt/global_tool"
export PATH="$PATH:$GLOBAL_TOOL_PATH/bin"
3. Сделайте файл исполняемым:
sudo chmod +x /etc/profile.d/my_custom_vars.sh
4. Изменения применятся при следующем входе пользователя в систему.
Практические примеры. Пример 1: Установка JAVA_HOME (классический случай):
1. Найдите, где установлена Java
update-alternatives --config java
Это вернет что-то вроде /usr/lib/jvm/java-11-openjdk-amd64/bin/java
2. Отредактируйте ~/.bashrc
nano ~/.bashrc
3. Добавьте в конец (без '/bin' в пути!)
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
4. Примените изменения
source ~/.bashrc
5. Проверьте
echo $JAVA_HOME
java -version
Пример 2: Добавление каталога ~/bin в PATH
Многие программы рекомендуют складывать бинарники в ~/bin.
1. Создайте папку, если её нет
mkdir -p ~/bin
2. Добавьте в ~/.bashrc
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
3. Примените изменения
source ~/.bashrc
Важные замечания и подводные камни
1. Какой файл выбрать?
~/.bashrc — для всего, что связано с работой в терминале (самый частый случай).
~/.profile — если переменные нужны графическим приложениям.
/etc/environment — для глобальных системных путей и переменных.
/etc/profile.d/ — для установки системного ПО (например, Docker, Node.js через сторонний репозиторий).
2. Порядок в PATH имеет значение!
PATH="$PATH:/new/path" — система будет искать в /new/path в последнюю очередь.
PATH="/new/path:$PATH" — система будет искать в /new/path в первую очередь. Это полезно, если вы хотите переопределить системную команду своей версией.
3. Проверка синтаксиса. После редактирования файлов всегда делайте source ~/.bashrc. Если терминал перестал работать — вы где-то ошиблись в синтаксисе (например, забыли кавычку). Проверьте правки.
4. Для применения изменений из ~/.profile и /etc/environment нужно перезайти в систему.
Итог:
● Для временного тестирования — используйте export в командной строке.
● Для постоянных настроек в терминале — редактируйте ~/.bashrc.
● Для глобальных системных настроек — используйте /etc/environment или /etc/profile.d/.