Env Loader
Generates and validates POSIX-compatible .env loading scripts that work consistently across bash, zsh, dash, and ash.
Problem It Solves
source .env behaves differently across shells:
- zsh: Strips quotes from values correctly
- bash/dash: Preserves quotes as part of the value (
"value"→ includes the quotes) - All shells:
sourceonly assigns, does notexport— child processes can't see the variables
This causes silent failures in deployment when .env files contain quoted values or special characters.
Usage
Generate the Loader Script
Run the bundled script or use the template:
bash ~/.openclaw/skills/env-loader/scripts/generate-loader.sh /path/to/project
This creates load-env.sh in the target directory.
Use in Deployment Scripts
# Instead of: source .env
# Use:
. ./load-env.sh .env
Validate an Existing .env File
bash ~/.openclaw/skills/env-loader/scripts/validate-env.sh /path/to/.env
Checks for common issues: unquoted special characters, inline comments, non-POSIX variable names.
Key Design Principles
- POSIX-only syntax — no bashisms, no zsh-isms, works in dash/ash
- Manual key=value parsing — never
sourceorevalthe .env file directly - Explicit quote stripping — removes surrounding single or double quotes consistently
- Key validation — only allows
[A-Za-z_][A-Za-z0-9_]*as variable names - Explicit export — every parsed variable is exported for child processes
References
See references/env-pitfalls.md for a detailed catalog of shell-specific .env parsing pitfalls.
