Install the CLI
Install the penv binary with the shell installer, PowerShell, or npm, and the checks each installer runs.
penv ships as one binary per platform.
Install
curl -fsSL https://penv.cloud/install | shInstall directory and PATH
Default: $HOME/.penv/bin (Windows: %USERPROFILE%\.penv\bin). The shell installer edits none of your startup files; when the directory is not on your PATH, it prints the line to add:
fish_add_path "$HOME/.penv/bin" # fish
echo 'export PATH="$HOME/.penv/bin:$PATH"' >> ~/.zshrc # zsh
echo 'export PATH="$HOME/.penv/bin:$PATH"' >> ~/.profile # bash / shOn Windows, pass -AddToPath, or set PENV_ADD_TO_PATH=1 when piping to iex.
Installer variables
| Variable | Effect | Installer |
|---|---|---|
PENV_VERSION | Release tag to install. Default: latest. | Both |
PENV_INSTALL_DIR | Install directory. | Both |
PENV_RELEASE_BASE | Base URL for release downloads. | Both |
PENV_TARGET | Target platform triple. | install.sh |
PENV_ALLOW_ROOT | 1 allows running as root. | install.sh |
PENV_ALLOW_ELEVATED | 1 allows running elevated. | install.ps1 |
PENV_ADD_TO_PATH | 1 adds the install directory to your user PATH. | install.ps1 |
Both installers refuse root or administrator by default.
curl -fsSL https://penv.cloud/install | PENV_VERSION=v1.0.0 sh # pin a versionChecksum verification
Both installers check the binary against its published SHA-256 digest before replacing yours; a mismatch installs nothing.
| Installer | Download | Ed25519 signature on the checksum file |
|---|---|---|
install.sh | Into the target directory, then an atomic move over the old binary | Checked when OpenSSL 1.1.1 or newer is on PATH; otherwise skipped with a warning |
install.ps1 | Into a temporary directory; the target directory is created after the digest passes | Not checked; SHA-256 only |
penv upgrade always checks the signature against release keys compiled into the binary.
Verify
penv --version
penvpenv with no arguments prints your current configuration and the next command to run.
Upgrade
penv upgrade # install the release /install gives
penv upgrade next # install the newest release, prereleases included
penv upgrade --check # report whether you are behind; install nothingA package-manager install answers managed_install with the manager's command (upgrade penv).