Гид по технологиям

Как установить переменные окружения в Zsh

5 min read Shell Обновлено 01 Dec 2025
Переменные окружения в Zsh — как задать и управлять
Переменные окружения в Zsh — как задать и управлять

Скриншот: пример установки переменной окружения в Zsh

Переменные окружения — это простые пары ключ=значение, которые передаются процессам и настраивают поведение программ. Zsh (Z shell) — интерактивная оболочка с удобной автодополнением, историей команд и гибкой конфигурацией. В этом руководстве показано, как создавать временные и постоянные переменные, какие есть приёмы и распространённые ошибки, а также приведены практические чек-листы и рекомендации по безопасности.

Что такое переменные окружения

Переменные окружения (environment variables) — это глобальные настройки для процессов в вашей системе. Они влияют на поиск исполняемых файлов, поведение программ, указание путей к библиотекам и конфигурациям. Переменные чувствительны к регистру: PATH и Path — разные имена. Обычно имена пишут ЗАГЛАВНЫМИ буквами, чтобы отличать их от локальных shell-переменных.

Коротко: переменная окружения — это имя и строковое значение, доступное процессам, которые вы запускаете из оболочки.

Временные и постоянные переменные

  • Временные переменные действуют только в текущем сеансе терминала или только для одной команды. При закрытии терминала они исчезают.
  • Постоянные переменные сохраняются в файлах конфигурации оболочки (например, ~/.zshrc). Они автоматически применяются при создании нового терминального сеанса.

Выбор зависит от цели: для одноразовой отладки используйте временные; для настроек, которые должны быть всегда — добавляйте в ~/.zshrc.

Как задать временные переменные

Самый простой способ задать временную переменную — команда export. Правильный синтаксис:

export VARNAME=VALUE

Примеры:

export MTE=7
echo $MTE

Если значение содержит пробелы или специальные символы, обёрните его в кавычки:

export DOMAIN="MAKE TECH EASIER"

В Zsh можно использовать и typeset (аналог declare), чтобы экспортировать переменную:

typeset -x VARNAME=VALUE

Это эквивалентно export и иногда дает более предсказуемое поведение в скриптах.

Задать переменную только для одной команды можно так:

MTE=7 some_command

В этом случае MTE будет доступна только в среде процесса some_command и не попадёт в текущий сеанс оболочки после завершения команды.

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

export PATH="$HOME/bin:$PATH"

Это добавляет $HOME/bin в начало PATH, не переписывая существующие пути.

Как задать постоянные переменные в Zsh

Чтобы переменная сохранялась между сеансами, добавьте строку с export в файл ~/.zshrc. Если файл отсутствует, создайте его.

Откройте файл в текстовом редакторе, например, nano:

nano ~/.zshrc

Добавьте необходимые строки:

export JAVA_HOME="/usr/lib/jvm/java-11-openjdk"
export PROJECT_PATH="$HOME/projects/myapp"
export PATH="$HOME/.local/bin:$PATH"

Скриншот: добавление переменной в ~/.zshrc в редакторе

Сохраните файл и примените изменения без перезапуска терминала:

source ~/.zshrc

Проверьте значение:

echo $JAVA_HOME
printenv JAVA_HOME

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

printenv

Скриншот: список всех переменных окружения

Типичные ошибки и как их исправить

  • Неправильный синтаксис: пропущен пробел после export — должно быть export VARNAME=VALUE, а не exportVARNAME=VALUE.
  • Отсутствие кавычек при значениях с пробелами → ошибка разбора. Используйте “…”.
  • Изменили ~/.zshrc, но забыли выполнить source ~/.zshrc.
  • Хранение секретов (ключей, токенов) в ~/.zshrc в открытом виде — риск компрометации.
  • Переопределение PATH без включения старого значения приводит к потере путей к системным утилитам.

Проверяйте изменения с помощью printenv и не перезаписывайте PATH, если не уверены.

Утилиты и альтернативные подходы

  • Для временных, скриптовых или CI-задач удобно задавать переменные в командной строке (VAR=val cmd) или использовать .env файлы в сочетании с инструментами вроде direnv.
  • typeset -x в Zsh — альтернативный способ экспортировать переменные с более строгой обработкой.
  • Для секретов используйте менеджеры: pass, gnome-keyring, macOS Keychain, HashiCorp Vault. Переменные можно считывать из менеджера в рантайме, не сохраняя в ~/.zshrc.
  • direnv автоматически загружает/выгружает переменные для проекта из .envrc и удобен для управления окружениями per-project.

Рекомендации по безопасности и приватности

  • Не храните секреты (пароли, API-ключи) прямо в ~/.zshrc или в репозиториях.
  • Если нужно временно использовать секрет, храните его в переменной окружения в CI-среде или считывайте из защищённого хранилища.
  • Ограничьте права доступа к конфигурационным файлам: chmod 600 ~/.zshrc.
  • При работе с данными пользователей соблюдайте требования локального законодательства и корпоративные политики по безопасности.

Чек-листы по ролям

Разработчик:

  • Использовать переменные для конфигурации, не для секретов.
  • Локально — .env файлы в .gitignore.
  • В CI — защищённые переменные через UI сервисов.

Системный администратор / DevOps:

  • Настроить менеджер секретов (Vault, Secrets Manager).
  • Автоматизировать восстановление конфигурации через Ansible/Chef/Puppet.
  • Добавить проверку прав доступа к файлам конфигурации.

Начинающий пользователь:

  • Создайте резервную копию ~/.zshrc перед правкой: cp ~/.zshrc ~/.zshrc.bak
  • После правок выполните source ~/.zshrc и проверьте printenv.

Ментальные модели и эвристики

  • Разделяйте конфигурацию и секреты: конфигурация → ~/.zshrc, секреты → менеджер секретов.
  • Для временных экспериментов используйте присвоение перед командой (VAR=val cmd).
  • Всегда сохраняйте старое значение PATH при добавлении новых директорий.

Критерии приёмки

  • Переменная присутствует в printenv после source ~/.zshrc.
  • Значение корректно отображается через echo $VARNAME.
  • Путь PATH содержит добавленные директории и продолжает включать системные пути.
  • Файл ~/.zshrc имеет корректные права доступа и резервную копию.

Часто встречающиеся сценарии и примеры

Добавить директорию в PATH навсегда:

# В ~/.zshrc
export PATH="$HOME/.local/bin:$PATH"

Добавить переменную только для команды (например, запустить тест в специальном окружении):

MY_ENV=staging pytest -q

Использовать typeset для экспорта (в скриптах Zsh):

typeset -x API_URL="https://api.example.com"

Загрузить переменные из файла .env (с осторожностью):

# не загружайте .env из непроверенных источников
set -o allexport
source .env
set +o allexport

Как отлавливать проблемы

  • Если переменная не видна, проверьте, выполняется ли файл ~/.zshrc (echo $ZSH_VERSION для подтверждения используемой оболочки).
  • Убедитесь, что строки export не находятся внутри условных блоков, которые не выполняются.
  • Для диагностики вставьте echo “Loaded ~/.zshrc” в начало файла и откройте новый терминал.

Заключение

Переменные окружения в Zsh — гибкий инструмент для управления поведением приложений и среды. Для одноразовых задач используйте временные присвоения или export в сессии; для постоянных настроек правьте ~/.zshrc и применяйте изменения командой source. Следуйте рекомендациям по безопасности: не храните секреты в открытом виде и ограничивайте доступ к конфигурациям. Простая дисциплина в управлении переменными предотвращает ошибки и облегчает переносимость окружения.

Важно: перед изменением конфигурационных файлов создавайте резервные копии и документируйте изменения, особенно на рабочих машинах или серверах.

Краткие рекомендации для быстрого старта:

  • Для временной переменной: export VARNAME=VALUE
  • Для одной команды: VARNAME=VALUE command
  • Для постоянной: добавить export VARNAME=VALUE в ~/.zshrc и выполнить source ~/.zshrc
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Просмотр анимированных GIF на Mac
macOS

Просмотр анимированных GIF на Mac

Режим экономии батареи Windows — включение и настройка
Windows

Режим экономии батареи Windows — включение и настройка

Защита Android от Godfather
Безопасность

Защита Android от Godfather

Виджет Focus Sessions в Windows 11 — что нового
Windows

Виджет Focus Sessions в Windows 11 — что нового

Поиск в Google Workspace: фильтры и приёмы
Поиск Google

Поиск в Google Workspace: фильтры и приёмы

Как проверить мощность USB‑портов в Windows
Оборудование

Как проверить мощность USB‑портов в Windows