Table of Content:

Installing an official binary

The recommended way to install Elvish is by downloading an official binary.

First, choose the version to install. At any given time, two versions of Elvish are supported:

  • The HEAD version tracks the latest development, and is updated shortly after every commit.

    Use HEAD if you want to use the latest features, and can live with occasional bugs and breaking changes.

  • The release version is updated with new features every 6 months, and gets occasional patch releases that fix severe issues.

    Use the release version if you want a stable foundation. You still need to update when a new release comes out, since only the latest release is supported.

Now find your platform in the table, and download the corresponding binary archive:

Version amd64 386 arm64
HEAD (Draft Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux macOS
0.16.3 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux macOS

(If your platform is not listed, you may still be able to build Elvish from source. For users in China, TUNA’s mirror may be faster.)

After downloading the binary archive, following these steps to install it:

cd ~/Downloads # or wherever the binary archive was downloaded to
tar xvf elvish-HEAD.tar.gz # or elvish-v0.15.0.tar.gz for release version
chmod +x elvish-HEAD # or elvish-v0.15.0 for release version
sudo cp elvish-HEAD /usr/local/bin/elvish # or anywhere else on PATH

On Windows, simply unzip the downloaded archive and move it to the desktop. If additionally you’d like to invoke elvish from cmd, move it to somewhere in the PATH instead and create a desktop shortcut.

Using Elvish as your default shell

The best way to use Elvish as your default shell is to configure your terminal to launch Elvish:

Terminal Instructions
Terminals for macOS
Terminal.app Open Terminal > Preferences. Ensure you are on the Profiles tab, which should be the default tab. In the right-hand panel, select the Shell tab. Tick Run command, put the path to Elvish in the textbox, and untick Run inside shell.
iTerm2 Open iTerm > Preferences. Select the Profiles tab. In the right-hand panel under Command, change the dropdown from Login Shell to Custom Shell, and put the path to Elvish in the textbox.
Terminals for Windows
Windows Terminal Press Ctrl+, to open Settings. Go to Add a new profile > New empty profile. Fill in the 'Name' and enter path to Elvish in the 'Command line' textbox. Go to Startup option and select Elvish as the 'Default profile'. Hit Save.
ConEmu Press Win+Alt+ T to open the Startup Tasks dialog. Click on ± button to create a new task, give it Elvish alias, enter the path to Elvish in the 'Commands' textbox and tick the 'Default task for new console' checkbox. Click on Save settings to finish.
Terminals for Linux and BSDs
GNOME Terminal Open Edit > Preferences. In the right-hand panel, select the Command tab, tick Run a custom command instead of my shell, and set Custom command to the path to Elvish.
Konsole Open Settings > Edit Current Profile. Set Command to the path to Elvish.
XFCE Terminal Open Edit > Preferences. Check Run a custom command instead of my shell, and set Custom command to the path to Elvish.
The following terminals only support a command-line flag for changing the shell
LXTerminal Pass --command $path_to_elvish.
rxvt Pass -e $path_to_elvish.
xterm Pass -e $path_to_elvish.
Terminal multiplexers
tmux Add set -g default-command $path_to_elvish to ~/.tmux.conf.

It is not recommended to change your login shell to Elvish. Some programs assume that user’s login shell is a traditional POSIX-like shell, and may have issues when you change your login shell to Elvish.

Installing from a package manager

Elvish is available from many package managers. Installing Elvish with the package manager makes it easy to upgrade Elvish alongside the rest of your system.

Beware that these packages are not maintained by Elvish developers and are sometimes out of date. For a comprehensive list of packages and their freshness, see this Repology page.

Arch Linux

Elvish is available in the official repository. This will install the latest packaged release:

pacman -S elvish

To install the HEAD version, install elvish-git from AUR with your favorite AUR helper:

yay -S elvish-git

Fedora

RPM packages are available from the FZUG Repo:

# Add FZUG repo
dnf config-manager --add-repo=http://repo.fdzh.org/FZUG/FZUG.repo
# Install latest packaged release
dnf install elvish

Debian / Ubuntu

Elvish is packaged by Debian since buster and by Ubuntu since 17.10:

apt install elvish

However, only testing versions of Debian and Ubuntu tend to have the latest Elvish release. If you are running a stable release of Debian or Ubuntu, it is recommended to install an official binaries instead.

macOS

Elvish is packaged by both Homebrew and MacPorts.

To install from Homebrew:

# Install latest packaged release
brew install elvish
# Or install HEAD:
brew install --HEAD elvish

To install from MacPorts:

sudo port selfupdate
sudo port install elvish

Windows

Elvish is available in the Main bucket of Scoop. This will install the latest packaged release:

scoop install elvish

FreeBSD

Elvish is available in the FreeBSD ports tree and as a prebuilt package. Both methods will install the latest packaged release.

To install with pkg:

pkg install elvish

To build from the ports tree:

cd /usr/ports/shells/elvish
make install

OpenBSD

Elvish is available in the official OpenBSD package repository. This will install the latest packaged release:

doas pkg_add elvish

NixOS (nix)

Elvish is packaged in nixpkgs:

# Install latest packaged release
nix-env -i elvish

Old versions

The following old versions are no longer supported. They are only listed here for historical interest.

Version amd64 386 arm64
0.16.2 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux macOS
0.16.1 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux macOS
0.16.0 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux macOS
0.15.0 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux
0.14.1 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux
0.14.0 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux
0.13.1 (Release Note) Linux macOS FreeBSD NetBSD OpenBSD Windows Linux Windows Linux
0.13 (Release Note) Linux macOS Windows Linux Windows Linux
0.12 (Release Note) Linux macOS Windows Linux Windows Linux
0.11 (Release Note) Linux macOS Windows Linux Windows Linux
Versions before 0.11 do not build on Windows
0.10 (Release Note) Linux macOS Linux Linux
Versions before 0.10 require cgo
0.9 (Release Note) Linux macOS N/A N/A
0.8 (Release Note) Linux macOS N/A N/A
0.7 (Release Note) Linux macOS N/A N/A
0.6 (Release Note) Linux macOS N/A N/A
0.5 (Release Note) Linux macOS N/A N/A
0.4 Linux macOS N/A N/A
Versions before 0.4 do not use vendoring and cannot be reproduced
0.3 Linux macOS N/A N/A
0.2 Linux macOS N/A N/A
0.1 Linux macOS N/A N/A