Ion is a modern system shell with a simple, yet powerful, syntax. It is written entirely in Rust, which significantly increases the overall quality and security of the shell. Taking advantage of the Ion’s features, it also offers a level of performance that is superior to the Dash. Although it is developed with and primarily for RedoxOS, it is fully capable on other *nix platforms.
Ion is still a WIP, and both its syntax and rules may change over time. It’s still a long way from being stable, but we’re getting very close. Changes in syntax are likely to be minimal at this time.
Ion has an RFC process for language proposals. The formal specification of Ion is located within the RFC branch. The RFC process is still in the early stages of development, so most of the ideas for current and future implementation have yet to be written into the specification.
The ion manual is generated automatically on each commit via the online mdBook and hosted on Redox OS’s website.
Creation of manual for local context
The sources for the manual are located here manual Directory.
- Create documentation file for builtin
- Then make the remaining ion manual through MDBook
Or you can create and open it in your default browser
mdbook serve manual --openOr you can create and host the manual on your localhost
View examples folder and parallel project
The following PPA supports releases 18.04 (Bionic) and 19.04 (Disco). Bionic builds were created using the RustC 1.39.0 package from the Pop_OS PPA.
sudo add-apt-repository ppa:mmstick76/ion-shell
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 Redox OS, rustup override set nightly Redox is required to create dependencies.
Please make sure that both Cargo and RustC 1.56.0 or higher are installed for your system. Release tarballs have not been created yet due to some of the remaining areas being incomplete.
Setting up Ion Shell for a user
git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo install --path=. --force This way ion executable will be installed in folder “~/.cargo/bin”
Alternatively you can do it like this
git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release
# Install to path which is included in the $PATH enviromnent variable
DESTDIR=~/.local/bin bash/install.shIon Shell system installation widely for all users
git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release
sudo DESTDIR=/usr/local/bin bash/install.sh
# Optional: Do this if Ion shell shoulb be login shell on your system
sudo make update-shells prefix=/usrThere are plugins for ion. These plugins are additional aliases and function definitions written in Ion for Ion. They can be found under this repository.
There is an officially supported syntax highlighting plugin for Vim/nvim users.

There is a graciously-supported syntax highlighting plugin for Emacs users.
(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))
There is an LSP-server for the scripting language of this shell. To get IDE support like code editor or error messages for IDE you can install LSP-server through crates.io which understands the client side of LSP. Link to the LSP server on Crate.io: https://crate.io/crate/ion_shell_lsp_server. The source code of the LSP server can be found here: https://gitlab.redox-os.org/redox-os/ion_lsp.
