Beyond Bash: 9 Lesser-Known Linux Shells and Their Capabilities

Originally posted on itsfoss.

You probably already know about the popular shells like bash and zsh. Let us explore some interesting and unique shells.

A Shell provides an interface to Linux and Unix-like systems by interpreting commands and acts as an intermediary between the user and the core workings of the operating system.

Undoubtedly, the bash shell is the most popular one, and some users prefer other shells like ZSH, which is the default shell in macOS. But many shells exist other than these popular ones, with different features and use cases.

In this article, we will take a look at some less popular shells that are actively maintained and provide a different user experience.

1. Fish Shell

When talking about shells other than bash/zsh, the first name coming to our mind is the fish shell.

Fish is a smart, user-friendly command line shell primarily for UNIX-like operating systems.

fish shell
Fish Shell

Features of Fish Shell

  • Autosuggestion of commands based on history and completions.
  • Supports 24-bit color.
  • It supports syntax highlighting, and all features work out of the box.

Install Fish

Fish is available in the official repos of almost all Linux distributions. In Ubuntu, you can install it by:

sudo apt install fish

The version in the Ubuntu repos is a bit old. If you want to install the latest version, you can use the official PPA provided by the team.

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish

Suggested Read 📖

How to Find Which Shell am I Using in Linux [4 Methods]
Here are four simple commands to find out which shell are you using in Linux.

2. Nushell

Nushell is a new type of shell that works in Linux, macOS, Windows, BSD, etc. Nu, as it’s also called, it takes its philosophy and inspiration from projects like PowerShell, functional programming languages, and modern CLI tools.


Features of Nushell

  • Everything is data: Nu pipelines use structured data so you can safely select, filter, and sort the same way every time.
  • Powerful plugins: It’s easy to extend Nu using a powerful plugin system.
  • Easy to read error messages. Nu operates on typed data, so it catches bugs that other shells don’t. And when things break, Nu tells you exactly where and why.
  • Clean IDE support.

Install Nushell

If you’re on Ubuntu, you won’t find an apt repository to install Nushell. But you can build it by installing the required dependencies, as per its instructions on GitHub.

Fortunately, there is a way to install it on any distro using Homebrew. You can refer to our tutorial on installing and using Homebrew Package Manager on Linux.

Once you successfully set it up on Linux, you need to type in the following command to install Nushell:

brew install nushell

Head to its official website to explore more installation options.

3. Dune

The project’s creator describes Dune as a shell by the beach. Dune is a fast, useful and pretty shell, offering a few niche metaprogramming features such as quoting.

dune shell
Dune Shell

Features of Dune Shell

  • Before entering the interactive mode, Dune executes the prelude, a startup file stored in the home directory.
  • Dune’s REPL is entirely customizable
  • You can define aliases by assigning a variable to a program’s name
  • Use a macro to write functions that modify your shell’s environment and act like commands or programs
  • Dune offers an extensive standard library and also provides a pretty interface to see all the functions available in each module.

Install Dune Shell

Dune shell is available in the Arch Linux repository as dunesh.

For all other users, the Dune shell can be installed with cargo. So first, you need to install the latest version of rust. If you already have rust installed, ensure you have the latest version and then proceed to install Dune.

cargo install -f dune

Once installed, you can access the shell by entering the following:


Suggested Read 📖

How to Change Shell in Linux
This quick tutorial shows how to check the running shell, available shell in the system and how to change the default shell in Linux.

4. Xonsh

Xonsh is a Python-powered, cross-platform shell and command prompt. It combines Python and bash shell so that you can run Python commands directly in the shell. You can even combine Python and shell commands.

xonsh shell
Xonsh Shell

We had a separate article on Xonsh if you are curious to learn more:

Xonsh Shell Combines the Best of Bash Shell and Python in Linux Terminal
Which is the most popular shell? I guess you’ll say bash or perhaps zsh and you are right about that. There are several shells available for UNIX and Linux systems. bash, ksh, zsh, fish and more. Recently, I came across another shell which offers a unique twist of combining

Features of Xonsh Shell

  • The Xonsh language has shell primitives that you are used to from Bash
  • Prepare environment variables and arguments in Python and use them in shell commands
  • Xontribs is a 3rd-party extension system
  • Customizable tab completion, key bindings, color styles
  • Rich interface to discover history

Installing Xonsh Shell

Xonsh is available in the repos of many Linux distributions like Ubuntu, Fedora, etc. So, to install it on Ubuntu, run:

sudo apt install xonsh

Xonsh also provides an AppImage package, which can be downloaded from their download page. You may refer to our AppImage guide if you are new to the file format.

5. Hilbish

Hilbish is an extensible shell that is very customizable via the Lua programming language. The shell is aimed at both casual users and power users.

hilbish shell

Features of Hilbish

  • Simple and Easy Scripting
  • History and Completion Menus: Provides the user with proper menus for completions and history searching
  • Syntax highlighting and hinting are available via the Lua API
  • It works on Unix systems and Windows, but on Windows, there may encounter issues.

Installing Hilbish

Hilbish is not available in the package repositories of Ubuntu. So, you will be building it from the source.

To install it, you need Go and task installed.

sudo apt install golang-go
sudo snap install task --classic

Once the dependencies are installed, run the following commands to install Hilbish shell:

git clone --recursive
cd Hilbish
go get -d ./...

If you want a stable branch, run these commands:

git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
task build
sudo task install

6. Elvish

Elvish is an expressive programming language and a versatile interactive shell. It runs on Linux, Mac, and Windows. Even if v1.0 has not been released, it is already suitable for most daily interactive use.

elvish shell

Features of Elvish

  • Powerful Pipelines: Pipelines in Elvish can carry structured data, not just text. You can stream lists, maps, and even functions through the pipeline.
  • Intuitive Control Structures
  • Directory History: Elvish remembers all the directories you have been to. You can access it by pressing CTRL+L.
  • Command History
  • Built-in File Manager: Accessible by pressing CTRL + N

Install Elvish

Elvish shell is available in Ubuntu and Arch Linux package managers. So to install it, open a terminal and run:

sudo apt install elvish

7. Oh

According to its developers, Oh is a reimagining of the Unix shell.

It aims to become a more powerful and robust replacement to modern options while respecting the conventions established by the Unix shell over the last half-century.

Oh Shell

Features of Oh Shell

  • First-class channels, pipes, environments, and functions
  • Rich return values that work with standard shell constructs
  • Support for modularity.
  • A simplified set of evaluation and quoting rules.
  • A syntax that deviates as little as possible from established conventions;

Installing Oh

Oh provides a pre-compiled binary. You need to download it from their official GitHub page.

You need to give execution permission to the file using the command:

chmod +x filename

Now, you can run it by :

./<name of binary file>

Suggested Read 📖

How to Run a Shell Script in Linux [Essentials Explained for Beginners]
There are two ways to run a shell script in Linux. You can use: bash Or you can execute the shell script like this: ./ That maybe simple, but it doesn’t explain a lot. Don’t worry, I’ll do the necessary explaining with examples so

8. Solidity

Solidity is an interactive shell with lightweight session recording and remote compiler support. When you change the solidity pragma/language, it automatically fetches a matching remote compiler.

Solidity Shell

Features of Solidity

  • pragma solidity <version> attempts to dynamically load the selected compiler version
  • Sessions can be saved and restored using the .session  command.
  • Settings are saved on exit (not safe when running concurrent shells).
  • $_ is a placeholder for the last known result.
  • Special commands are dot-prefixed. Everything else is evaluated as Solidity code.

Install Solidity

You can install solidity shell through npm.

Ensure you have the latest version of nodejs and npm installed, then type the following command:

npm install -g solidity-shell

Once installed, run solidity-shell to start the session.

9. Yash

Yash, or yet another shell is a POSIX-compliant command line shell written in C99 (ISO/IEC 9899:1999). It has features for daily interactive and scripting use.

Yash Shell

Features of Yash Shell

  • Global aliases
  • Socket redirection, pipeline redirection, and process redirection
  • Prompt command and command-not-found handler
  • Command line completion with predefined completion scripts for more than 100 commands
  • Command line prediction based on command history

Installing Yash Shell

To install the shell, you need to go to their GitHub releases page and download the tar file. Now extract the tar file; inside it, you will find an INSTALL file with instructions to install it.

Typically, you should execute the below command inside the extracted folder.

./configure && make && sudo make install

Honorable Mentions

  1. Ion: Ion Shell is a modern system shell written in Rust, primarily for RedoxOS. It is still a work in progress, and users should expect syntax changes.
  2. Closh: Closh is a bash-like shell that combines the best of traditional UNIX shells with the power of Clojure. It aims to be a modern alternative to bash. This, too, is in the early stages of development.
  3. Dash: Dash is a POSIX-compliant, fast and lightweight shell from Debian.

Source: itsfoss