shell-env
February 1, 2026 ยท View on GitHub
Get environment variables from the shell
Especially useful for Electron apps as GUI apps on macOS doesn't inherit the environment variables defined in your dotfiles (.bash_profile/.zshrc/etc).
Install
npm install shell-env
Usage
import {shellEnv} from 'shell-env';
console.log(await shellEnv());
//=> {TERM_PROGRAM: 'Apple_Terminal', SHELL: '/bin/zsh', ...}
console.log(await shellEnv('/bin/bash'));
//=> {TERM_PROGRAM: 'iTerm.app', SHELL: '/bin/zsh', ...}
API
Note
For Bash, it reads .bash_profile, but not .bashrc.
Note
If your default shell is a non-POSIX shell (e.g., Nushell), it will fall back to /bin/zsh or /bin/bash.
Note
It disables the oh-my-zsh tmux plugin auto-start by setting ZSH_TMUX_AUTOSTARTED and ZSH_TMUX_AUTOSTART=false so the shell does not launch tmux while capturing environment variables.
shellEnv(shell?)
Return a promise for the environment variables.
shellEnvSync(shell?)
Returns the environment variables.
shell
Type: string
Default: User default shell
Shell to read the environment variables from.
Related
- shell-path - Get the $PATH from the shell
- fix-path - Fix the $PATH on macOS when run from a GUI app
- shell-history - Get the command history of the user's shell