-
-
Notifications
You must be signed in to change notification settings - Fork 81
Environment Variables
- Introduction
- Environment Variable Expansion
- GUI
- CLI Option:
--env - CLI Example
- PowerShell Option:
-Env - PowerShell Example
- Tips
Servy allows you to define environment variables for the service process, enabling fine-grained control over the runtime context.
Environment variable expansion is supported in multiple areas of Servy configuration:
- Service binary paths (
--path/-Path) -
Startup directories (
--startupDir/-StartupDir) -
Process parameters (
--params/-Params) -
Environment variables (
--env/-Env)
This makes it possible to reference existing system variables, user-defined variables, or paths dynamically in your configuration.
Servy uses a sophisticated expansion engine that allows variables to reference each other. The resolution follows this specific order:
- System Environment: All current system and process environment variables are loaded first.
-
Custom Overrides: Variables defined in the Environment Variables field (or
--env) are added next. If a custom variable has the same name as a system variable, the custom value wins. -
Cross-Reference Expansion: Finally, all variables are scanned for
%VAR%placeholders. These placeholders are resolved using the final merged set of variables.
Example of Expansion Logic:
If your system has TEMP=C:\Windows\Temp and you define:
MY_ROOT=C:\ServyAppMY_LOGS=%MY_ROOT%\logsAPP_TEMP=%TEMP%
The final environment seen by your process will be:
-
MY_ROOT:C:\ServyApp -
MY_LOGS:C:\ServyApp\logs -
APP_TEMP:C:\Windows\Temp
The advanced tab in Servy allows setting environment variables for the service process:
The --env command-line option lets you specify environment variables for the service process.
-
Syntax:
--env="VAR1=value1; VAR2=value2" - Separate multiple variables with semicolons (;)
- Special characters can be escaped:
-
\=to escape= -
\"to escape" -
\;to escape; -
\\to escape\
-
- Supports environment variable expansion. Example:
--env="VAR1=%ProgramData%\MyApp; VAR2=%VAR1%\bin" - Useful for setting runtime context without changing system-wide environment variables.
servy-cli install `
--name="My NodeJS Service" `
--description="My NodeJS Server" `
--path="%ProgramFiles%\nodejs\node.exe" `
--startupDir="C:\Apps\App" `
--params="C:\Apps\App\index.js" `
--startupType="Automatic" `
--env="NODE_ENV=production; APP_CONFIG=C:\Apps\App\config.json"The -Env parameter lets you define environment variables when installing a service via PowerShell.
-
Type:
string(semicolon-separated list, optional) - Apply the same escaping rules as the CLI.
- Multiple variables are separated with semicolons (;)
- Variables are applied only to the service process, not system-wide.
Import-Module "C:\Program Files\Servy\Servy.psm1" -Force
$installParams = @{
Quiet = $true
Name = "My NodeJS Service"
Description = "My NodeJS Server"
Path = "C:\Program Files\nodejs\node.exe"
StartupDir = "C:\Apps\App"
Params = "C:\Apps\App\index.js"
StartupType = "Automatic"
Env = "NODE_ENV=production; APP_CONFIG=C:\Apps\App\config.json"
}
Install-ServyService @installParams-
Case Insensitivity: Environment variable names are case-insensitive. Defining
node_envwill correctly override an existingNODE_ENV. -
Expansion Order: You can reference both existing system variables (like
%ProgramData%) and other custom variables defined in the same list. -
Safe Escaping: If your variable value must contain a literal
%, ensure it is not wrapped in another%or it may be treated as a failed expansion. -
Verification: To troubleshoot, set your service path to
cmd.exewith parameters/c set > C:\temp\env_check.txtto see exactly what the process "sees" at startup. -
Troubleshooting One-Liner: If you aren't sure if your variables are applying correctly, run this to dump the environment to a file:
servy-cli install --name "EnvTest" --path "cmd.exe" --params "/c set > %TEMP%\servy_env.txt" --env="TEST_VAR=Success"
Copyright © Akram El Assas. All rights reserved.
- Home
- Overview
- Installation Guide
- Advanced Configuration
- Usage
- Servy Desktop App
- Servy Manager
- Servy CLI
- PowerShell Module
- Examples & Recipes
- Logging & Log Rotation
- Health Monitoring & Recovery
- Environment Variables
- Service Dependencies
- Pre-Launch & Post-Launch Actions
- Pre-Stop & Post-Stop Actions
- Shutdown & Teardown
- Export/Import Services
- Automation & CI/CD
- Integration with Monitoring Tools
- Service Event Notifications
- Comparison with Alternatives
- Security
- Architecture
- Building from Source
- Troubleshooting
- FAQ