Feel at home on macOS.
A repeatable setup for your shell, with your existing configuration kept in place.
1. Check the essentials
Use Terminal or your preferred terminal app. Zsh and Bash are supported. You need Git and either curl or wget. If Git is missing, follow the Git for macOS instructions, including the Apple Command Line Tools option.
git --version
curl --version
printf '%s
' "$SHELL"2. Choose your shell and install
The default is the shell named by $SHELL, with Bash as a fallback. You can select Bash, Zsh, or both below. The installer itself runs under sh and does not require Node.js, npm, or Python.
Make yourself at home.
curl -fsSL https://projects.envmanager.victorqueiroz.dev/install.sh | sh -s -- --shell autoNo sudo. Repeatable installation. Optional tools stay opt-in.
Prefer to read the script before executing it? Download it to a working directory and inspect it first:
curl -fsSL https://projects.envmanager.victorqueiroz.dev/install.sh -o envmanager-install.sh
less envmanager-install.sh
sh envmanager-install.sh --shell zshUse --dry-run to see the selected shell, install location, and planned startup-file actions with line numbers, without downloading anything or changing files. Published releases and checksums are available on GitHub Releases.
3. Open a new shell
Start a new terminal session and check the loaded helpers:
em_status
em_add_path PATH "$HOME/bin"
em_disabled_scriptsA fresh installation starts with the core preset: environment defaults, user binary directories, and shared telemetry opt-out preferences. Optional tool modules are disabled. Existing installations retain their own enabled and disabled modules.
Enabling an optional tool module can download third-party software or apply that module's configuration the next time it loads. Read its source and prerequisites before choosing it.
# Opt into a module for future loads.
em_enable nvm
# Disable a module again.
em_disable nvmWhat the installer changes
- A release checkout at
${XDG_CONFIG_HOME:-$HOME/.config}/envmanager, or your--dirlocation. - A small managed loader at
~/.envmanagerrcwhen no custom loader exists. - One managed block in the selected shell's startup files. Bash login and interactive startup share a per-process guard; Zsh respects
ZDOTDIR. - Installer state under
${XDG_STATE_HOME:-$HOME/.local/state}/envmanager. Existing files are backed up only when their contents change.
Re-running the same installation is a no-op. Missing integration files can be repaired without downloading another release. Symlinked dotfiles keep their links and file permissions. The installer never sources your shell configuration while installing.
Upgrade when you choose
curl -fsSL https://projects.envmanager.victorqueiroz.dev/install.sh | sh -s -- --upgradeRelease installations are pinned to a published tag and verified commit. They skip the daily Git pull updater. An explicit upgrade preserves local overrides and module choices; new optional modules start disabled in the core preset. Modified checkouts report a conflict so you can preserve your work first. Existing branch-based installations keep their branch and use fast-forward updates.
Remove the shell integration
curl -fsSL https://projects.envmanager.victorqueiroz.dev/install.sh | sh -s -- --uninstallUninstall removes managed startup blocks and an unchanged managed loader. It retains the checkout, edited loaders, local overrides, and tool data. Open a new shell afterward. See the documentation for configuration options and troubleshooting.