# Переменные окружения Переменные окружения используются для изменения некоторых низкоуровневых настроек Xray. Их можно задать как в разделе `env` файла конфигурации, так и традиционным способом через окружение процесса перед запуском Xray. ::: tip Имена переменных Встроенные переменные Xray поддерживают как имена в нижнем регистре с точками, так и имена в верхнем регистре с символами подчёркивания, например `xray.location.asset` и `XRAY_LOCATION_ASSET`. Если существуют обе формы, приоритет имеет форма с точками.
Далее на этой странице используется форма с точками; при настройке через командную оболочку или диспетчер служб для лучшей совместимости рекомендуется форма в верхнем регистре с символами подчёркивания. ::: ## EnvObject `EnvObject` соответствует разделу `env` в файле конфигурации и представляет собой набор имён и значений переменных окружения. ```json { "env": { "xray.location.asset": "/usr/local/share/xray", "xray.buf.readv": "true", "xray.ray.buffer.size": "2" // ... } } ``` > `имя переменной окружения`: string Имя и значение каждой переменной окружения должны быть строками. После чтения и объединения всех файлов конфигурации Xray записывает элементы `env` в окружение текущего процесса перед созданием модулей. ::: tip При использовании [нескольких файлов конфигурации](./features/multiple.md) их разделы `env` объединяются по ключам. Одинаковый ключ из более позднего файла заменяет предыдущее значение. Раздел `env` задаёт имя именно в записанном виде и заменяет существующую переменную процесса с точно таким же именем. ::: ::: warning Раздел `env` применяется только после того, как файлы конфигурации были найдены, прочитаны и объединены. Поэтому, чтобы следующие три параметра повлияли на текущий запуск, их необходимо передать через окружение процесса до запуска Xray. Если записать их в раздел `env` файла конфигурации, они не повлияют на поиск или разбор этого файла: - `xray.json.strict` - `xray.location.config` - `xray.location.confdir` ::: ## Настройка переменных окружения процесса В следующих примерах задаются путь к файлам ресурсов и строгий анализатор JSON: ::: code-group ```bash [Shell] # Задать переменные в текущей оболочке и запущенных из неё процессах export XRAY_LOCATION_ASSET=/usr/local/share/xray export XRAY_JSON_STRICT=true # Либо задать их только для одного запуска Xray, разделяя пробелами XRAY_LOCATION_ASSET=/usr/local/share/xray XRAY_JSON_STRICT=true xray run ``` ```powershell [PowerShell] # Задать переменные в текущем сеансе PowerShell и запущенных из него процессах $env:XRAY_LOCATION_ASSET = "C:\Xray" $env:XRAY_JSON_STRICT = "true" ``` ```batch [CMD] :: Задать переменные в текущем сеансе CMD и запущенных из него процессах set "XRAY_LOCATION_ASSET=C:\Xray" set "XRAY_JSON_STRICT=true" ``` ```ini [systemd] # Задать переменные в разделе [Service] службы Xray [Service] Environment="XRAY_LOCATION_ASSET=/usr/local/share/xray" Environment="XRAY_JSON_STRICT=true" ``` ::: ## Встроенные переменные Xray ### Путь к файлам ресурсов - Имя: `xray.location.asset`. - Значение по умолчанию: определённые каталоги [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) или каталог исполняемого файла Xray. Эта переменная задаёт каталог, содержащий файлы `geoip.dat` и `geosite.dat`. Если она не указана, программа ищет файлы ресурсов в следующем порядке: ```text ./ /usr/local/share/xray /usr/share/xray ``` ### Расположение файла конфигурации - Имя: `xray.location.config`. - Значение по умолчанию: каталог исполняемого файла Xray. Эта переменная задаёт каталог, содержащий файл `config.json`. Запись в разделе `env` файла конфигурации не действует, поскольку Xray находит файл конфигурации до чтения этого раздела. ### Каталог с несколькими конфигурациями - Имя: `xray.location.confdir`. - Значение по умолчанию: `""`. Файлы `.json` из этого каталога читаются в порядке имён как несколько файлов конфигурации. Запись в разделе `env` файла конфигурации не действует, поскольку Xray находит каталог конфигурации до чтения этого раздела. Этот параметр имеет более низкий приоритет, чем аргумент запуска `confdir`. ### Строгий синтаксический анализатор JSON - Имя: `xray.json.strict`. - Значение по умолчанию: `false`. По умолчанию при запуске Xray использует собственный синтаксический анализатор JSON, который удаляет из конфигурации комментарии и другие нестандартные символы. Если файлы конфигурации строго соответствуют стандарту JSON (RFC 8259), этот параметр позволяет использовать стандартный анализатор, способный быстрее обрабатывать очень большие конфигурации. Запись в разделе `env` файла конфигурации не действует, поскольку Xray должен выбрать анализатор JSON до чтения этого раздела. ### Другие доступные переменные - `xray.location.cert` - `xray.buf.readv` - `xray.buf.splice` - `xray.vmess.padding` - `xray.cone.disabled` - `xray.ray.buffer.size` - `xray.browser.dialer` - `xray.xudp.show` - `xray.xudp.basekey` - `xray.tun.fd` Эти параметры предназначены для специализированных сценариев. Их точное назначение можно узнать из исходного кода.