The 13 Best Shell for Your Linux or Unix
It’s been a long time since people asked me for this list (mainly as a ranking). Of course the choice will depend on your taste, but it is interesting to know the list so that it is easier for you.
One of the reasons that most attributed the success of Unix and Linux, sure was Shell. A “blessed” place that generates many facilities especially when we learn how to create scripts that do, configure everything for us with a simple command.
And with each passing day using commands becomes more useful. Almost all the news that comes up, only works in Shell, the command line. Success ended up “spilling over” to Windows which until then had only CMD, but soon found a way to port the most famous shell in the world Linux.
And not to mention that they still developed a shell of their own, although the features have not made users of: UNIX, BSD, Linux to adopt them, for the sake of familiarity (mixing uppercase and lowercase letters, for example), something that makes it more confusing to adapt, makes it slightly more laborious, something that in the Unix and Linux world, is totally inadmissible, the motto is: “Do less and have more results!”, which boil down to the scripts that create “Bots” that do everything for us! 😄
Come on the list then!
13th - Sash
Better known as ** Stand-alone Shell ** (meaning its acronym), it is a Unix shell designed for use in recovering certain types of system crashes.
The internal sash commands have all libraries statically linked; therefore, unlike most shells on Linux, standard UNIX commands do not depend on external libraries.
For example, the
copy (cp) command requires
ld-linux.so when created from GNU Core Utilities on Linux. If any of these libraries become corrupted, the coreutils
cp command will not work; however, in
sash, the internal command
cp would not be affected.
Its official page is: http://members.tip.net.au/~dbell/. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
12th - Mksh
mksh is MirBSD Korn Shell, an actively developed free implementation of the Korn Shell programming language and successor to Public Domain Korn Shell (pdksh). It is developed as part of the [MirOS] Project (https://www.mirbsd.org) as a native Bourne/POSIX/Korn shell for MirOS BSD, but also to be readily available on other UNIX-like operating systems. It is intended for users who want a compact, fast, reliable and secure shell without cutting out modern extensions with unicode support.
Due to its speed, POSIX compliance and advanced features, it is ideal for scripting. But it can also serve very well as a login shell. It is used as default shell on Android.
Its official page is: https://www.mirbsd.org/mksh.htm. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
There is a very cool Mksh community on Freenode: irc://chat.freenode.org/#!/Bin/mksh
11th - Power Shell
PowerShell (including Windows PowerShell and PowerShell Core) is a Microsoft framework for task automation and configuration management, consisting of a command line shell and associated scripting language built into the .NET framework.
PowerShell provides full access to COM and WMI, allowing administrators to perform administrative tasks on remote and local Windows systems, as well as WS-Management and CIM that enables management of remote Linux systems and network devices. Initially a Windows-only component, PowerShell became open source and multiplatform on August 18, 2016.
Its official page is: https://docs.microsoft.com/en-us/powershell/. Unlike the previous ones mentioned here, it is not available in the repositories of Linux and BSD distributions, but it is possible to use maneuvers such as: Compile, use third party repositories (like PPA in Ubuntu) and others.
In Gentoo you can install via Layman, example:
10th - Ion Shell
Ion is a modern system shell that features simple yet powerful syntax. It is written entirely in Rust, which greatly enhances the quality and overall safety of the shell. It also offers a performance level that exceeds that of Dash/Ash by taking advantage of Ion’s capabilities. Although developed alongside and primarily for RedoxOS, it is fully capable on other nix platforms.
Its official page is: https://github.com/redox-os/ion. It is also not available in the Linux and BSD distributions repositories, but it is possible to use maneuvers such as: Compile, use third party repositories (like PPA in Ubuntu) and others.
For example, on Ubuntu you can add a PPA:
9th - Eshell
Eshell is a shell-like command interpreter implemented in Emacs Lisp. It does not invoke external processes except those requested by the user. It is intended to be an alternative to IELM REPL for Emacs and with an interface similar to command shells like bash, zsh, rc, or 4dos.
Its official page is: https://www.gnu.org/software/emacs/manual/html_mono/eshell.html. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
8th - Tcsh
It is a Unix shell based on and compatible with the C (csh) shell. It is essentially the C shell with programmable command line completion, command line editing, and some other features. Unlike other common shells, functions cannot be defined in a tcsh script and the user must use aliases (as in csh). It is the native root shell for BSD-based systems such as FreeBSD.
The “t” in tcsh comes from the “T” in TENEX, an operating system that inspired Ken Greer at tegsh author Carnegie Mellon University with its command completion feature. Its syntax has a parenthesized
if similar to several other programming languages, for example:
Its official page is: https://www.tcsh.org/. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
7th - Sh (Thompson Shell)
The Thompson shell (co-creator of Unix along with Denis Rithie) is the first Unix shell, introduced in the first version of Unix in 1971, and was written by Ken Thompson. It was a simple command interpreter, not designed for scripting, but introduced several innovative features in the command line interface and led to the development of later Unix shells.
Your unofficial page is: https://github.com/yvesnrb/Thompson-Shell. It is now available (preinstalled) on all Linux and BSD distros.
6th - Zsh
Zsh is an interactive login shell that can also be used as a powerful scripting language interpreter. It is similar to bash and Korn shell, but offers great configurability.
Its official page is: https://www.zsh.org/. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
5th - Xonsh
Xonsh is a Unix, Python, and multiplatform compatible Shell and command prompt available for Linux, macOS, and Windows. It is intended for experts and novices. For the Python developer, Xonsh is a real hands-on, as it is virtually a hybrid utility and recognizes two languages in the same environment.
4th - Fish
Fish is a user-friendly smart command line available for shell on Linux, OS X and the rest of the UNIX family.
- It has colors for easy understanding;
- Command completion;
- Syntax Highlight and other options.
Its official page is: http://fishshell.com/. You can install it according to this tutorial we made: Fish Shell, more productivity in your Shell Script and also a Fish prompt customization application: Install Oh My Fish on your Linux or Unix-like.
3rd - Ksh
Considered to be the most popular Shell on Unix systems, Korn Shell was developed by David Korn of Bell Labs, and is a superset of sh, ie it has all the features of sh and has added many more. Full compatibility with sh has brought many Shell users and programmers into this environment. In short, KSH - korn Shell was the first Shell to introduce advanced features.
Its official page is: http://www.kornshell.com/. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
2nd - Csh
The Csh or C shell was developed by Bill Joy of the University of Berkeley and is the most commonly used shell in BSD and Xenix environments. Originally derived from the sixth edition of Unix/bin/sh (which was the Thompson shell), Bourne shell’s predecessor.
The syntax was modeled after the C programming language. Csh has added many apparatuses on top of the Bourne shell, such as aliases and command history. Today, the original csh is not widely used on Unix; has been outperformed by other shells such as Tenex C shell (tcsh) originally based on C shell code, adding file name complementing and command line editing compared to Korn shell (ksh), and GNU Bourne-Again shell (bash). An independently developed and modern C shell created by Nicole Hamilton also survives on Windows in the form of the Hamilton C shell.
Its official page is: http://bxr.su/NetBSD/bin/csh/. And it is available in the repositories of most Linux and BSD distributions. Then you can use the package manager to install it. Gentoo Example:
1st - Bash
And finally in the very first place we have the Bash. GNU Bash or simply Bash is a Unix command and shell language written by Brian Fox for GNU Project as an open source replacement for the Bourne shell.
First released in 1989, was widely used as the default login shell for most Linux distributions and Apple’s macOS Mojave and earlier versions. A version is also available for Windows 10. It is also the default user shell on Solaris 11.
Its official page is: https://www.gnu.org/software/bash/. It is now available (preinstalled) in almost all Linux distros.
If you would like to see a cool video tutorial(in portuguese) on: How to Create a FETCH, ScreenFetch and Neofetch Style on SHELL SCRIPT
If you are interested in switching from Shell, you can use the command
chsh (CH ange SH ell) for this, for example:
Changing to mksh you can pass the path or name only if you wish. To find the path, use the
whichcommand, for example to find the path of mksh itself:
If you want to see a feature comparison of each one, check out this link: Shells Comparison
Hope you enjoyed the list and ranking, if you have anything new to suggest, use the comments. And as usual, I choose Bash, my war mate! 😀 A big hug and even more!