feat(dotenv): add named pipe (FIFO) support

1Password Environments and similar secret managers mount `.env` files
as UNIX named pipes (FIFOs) instead of regular files. The `source_env`
function previously only checked for regular files (`-f`), causing it
to silently skip FIFO-backed `.env` files. Adding a `-p` check allows
the plugin to also source named pipes.
This commit is contained in:
Thomas Witt 2026-02-12 16:37:39 +02:00
commit 4b4641c390
No known key found for this signature in database
GPG key ID: 857B3DC11C10C2F2
2 changed files with 9 additions and 1 deletions

View file

@ -78,6 +78,14 @@ change.
NOTE: if a directory is found in both the allowed and disallowed lists, the disallowed list
takes preference, _i.e._ the .env file will never be sourced.
## Named Pipe (FIFO) Support
The plugin supports `.env` files provided as UNIX named pipes (FIFOs) in addition to regular files.
This is useful when secrets managers like [1Password Environments](https://developer.1password.com/docs/environment/)
mount `.env` files as named pipes to inject secrets on-the-fly without writing them to disk.
No additional configuration is required — the plugin automatically detects and sources named pipes.
## Version Control
**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only.

View file

@ -11,7 +11,7 @@
## Functions
source_env() {
if [[ ! -f "$ZSH_DOTENV_FILE" ]]; then
if [[ ! -f "$ZSH_DOTENV_FILE" ]] && [[ ! -p "$ZSH_DOTENV_FILE" ]]; then
return
fi