Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit

Instead of last command.

Early exit error in pipeline also shows error code.
Document "pipefail" option in builtin.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time
October 21, 2018 03:20
May 3, 2017 21:53
February 11, 2023 14:42
February 15, 2019 16:47
January 21, 2020 21:38


Ion is a modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust, which greatly increases the overall quality and security of the shell. It also offers a level of performance that exceeds that of Dash, when taking advantage of Ion's features. While it is developed alongside, and primarily for, RedoxOS, it is a fully capable on other *nix platforms.

Ion Shell

MIT licensed Documentation

Ion is still a WIP, and both its syntax and rules are subject to change over time. It is still quite a ways from becoming stabilized, but we are getting very close. Changes to the syntax at this time are likely to be minimal.

Ion Specification

Ion has a RFC process for language proposals. Ion's formal specification is located within the rfcs branch. The RFC process is still in the early stages of development, so much of the current and future implementation ideas have yet to be written into the specification.

Ion Manual

The Ion manual online is generated automatically on each commit via mdBook and hosted on Redox OS's website.

Building the manual for local reference

Sources for the manual are located in the manual directory.

  1. Build the documentation file for the builtins
make manual
  1. Then build the rest of the Ion manual via mdbook
mdbook build manual

Or you can build and open it in the your default browser via

mdbook serve manual --open

Or you can build and host the manual on your localhost via

mdbook serve manual 

Ion library example

See the examples folder and the Parallelion project


Pop!_OS / Ubuntu

The following PPA supports the 18.04 (bionic) and 19.04 (disco) releases. Bionic builds were made using the Pop_OS PPA's rustc 1.39.0 package.

sudo add-apt-repository ppa:mmstick76/ion-shell

Developer set up

Those who are developing software with Rust should install the Rustup toolchain manager. After installing rustup, run rustup override set 1.56.0 to set your Rust toolchain to the version that Ion is targeting at the moment. To build for Redox OS, rustup override set nightly is required to build the Redox dependencies.

Build dependencies

Please ensure that both cargo and rustc 1.56.0 or higher is installed for your system. Release tarballs have not been made yet due to Ion being incomplete in a few remaining areas.

Compile instructions for distribution

git clone
cd ion
RUSTUP=0 make # By default RUSTUP equals 1, which is for developmental purposes
sudo make install prefix=/usr
sudo make update-shells prefix=/usr

To compile in DEBUG mode, pass DEBUG=1 as an argument to make

Ion plugins

There are plugins for ion. These plugins are additional aliases and function definitions written in Ion for Ion. They can be found under this repository.

Vim/NeoVim Syntax Highlighting Plugin

For vim/nvim users there is an officially-supported syntax highlighting plugin.

Plugin 'vmchale/ion-vim'

Vim Syntax Highlighting

Emacs Syntax Highlighting Plugin

For emacs users there is a kindly-supported syntax highlighting plugin.

(add-to-list 'load-path  (expand-file-name "/path/to/ion-mode"))
(require 'ion-mode)
(autoload 'ion-mode (locate-library "ion-mode") "Ion majore mode" t)
(add-to-list 'auto-mode-alist '("\\.ion\\'" . ion-mode))
(add-to-list 'auto-mode-alist '("/ion/initrc" . ion-mode))

Emacs Syntax Highlighting