# Переменные окружения Переменные окружения используются для изменения некоторых низкоуровневых настроек Xray. Переменные окружения могут быть записаны в окружение текущего процесса Xray из раздела `env` после чтения конфигурации либо переданы через командную оболочку или диспетчер служб до запуска Xray. ## EnvObject `EnvObject` соответствует разделу `env` в файле конфигурации и представляет собой набор имён и значений переменных окружения. ```json { "env": { "XRAY_LOCATION_ASSET": "/usr/local/share/xray", "XRAY_BUF_READV": "true", "XRAY_RAY_BUFFER_SIZE": "2", "GODEBUG": "gctrace=1,schedtrace=1000,scheddetail=1" // ... } } ``` > `имя переменной окружения`: string Имя и значение каждой переменной окружения должны быть строками. После чтения и объединения всех файлов конфигурации Xray записывает элементы `env` в окружение текущего процесса перед созданием модулей. ::: tip При использовании [нескольких файлов конфигурации](./features/multiple.md) их разделы `env` объединяются по ключам. Одинаковый ключ из более позднего файла заменяет предыдущее значение. Раздел `env` задаёт имя именно в записанном виде и заменяет существующую переменную процесса с точно таким же именем. ::: ::: warning Раздел `env` применяется только после того, как файлы конфигурации были найдены, прочитаны и объединены. Некоторые переменные окружения необходимо задать через командную оболочку или диспетчер служб до запуска Xray, например: - `XRAY_JSON_STRICT` - `XRAY_LOCATION_CONFIG` - `XRAY_LOCATION_CONFDIR` - `GOGC` - `GOMEMLIMIT` - `GOMAXPROCS` - `GOTRACEBACK` ::: ## Настройка переменных окружения перед запуском Xray В следующих примерах командная оболочка или диспетчер служб используются для настройки пути к файлам ресурсов и строгого анализатора 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_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_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_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` Эти параметры предназначены для специализированных сценариев. Их точное назначение можно узнать из исходного кода.