What is the best alternative to sh?
Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Pro Sane array handling
In rc $array expands to the whole array and if one of the elements of the array has spaces in it, it's still considered one single element after the array variable expansion.
Pro Simple
rc is a very simple and easy to learn shell.
Pro C-like syntax
rc has very C-like syntax, which is very helpful for people who are used to C-like programming languages and will find rc's syntax very enjoyable. For example: for (i in `{seq 1 100}) { echo $i}
Con Lacks return statement
rc has no return statement.
Pro Auto suggestions
fish suggests commands as you type, based on command history, completions, and valid file paths. As you type commands, you will see a completion offered after the cursor, in a muted gray color (which can be changed with the fish_color_autosuggestion variable).
Pro Already set up for you
While other shells require a lot of set up to act the way you want them to and to have some useful features, fish works perfectly out of the box. It has all the most widely used features baked in and are there out of the box without having the need to install plugins or tweak any configuration file...
Pro High portability
Because it needs very little configuration to work properly, you can use Fish everywhere. If you are working on a system you don't usually work, installing Fish from the repository is easy and will give you the same experience as the installation on your own machine without having to drag a dot...
Con Not POSIX compliant
Although fish tries not to break POSIX compatibility without a good reason, and despite efforts to implement a compatibility mechanism, you can face some issues if POSIX compatibility is expected/required. Though, enthusiasts fix these cases. For example, add set shell=sh in your .vimrc to s...

Con Very slow
Much of the functionality in Fish was not written with performance in mind.
Con No support for sudo ! !
Fish has no support for sudo !!, but you can use Oh My Fish shell framework and install bang-bang plugin to have this shortcut in Fish shell. The downside of using bang-bang is that it takes over ones default key bindings, for those that don't use them it should not be an issue but for those th...
Pro Interactive autocompletion
When you start typing a command, you can press the tab key and it will complete the command you started typing. If there are multiple potential commands, you can choose which one to run by simply pressing tab again.
Pro Powerful community-driven tools via oh-my-zsh
Oh-my-zsh is a community-driven framework, which helps users with their zsh configuration and plugins. 400 plugins, 200+ themes and auto-updates to always be up to date.
Pro Autocomplete for options
Zsh intelligently determines if you are trying to complete a file path or an option, and pressing tab after typing - will reliably bring up a list of options.
Con Requires a lot of configuration to be used fully
Zsh requires a lot of tinkering with configuration files and downloading plugins in order to be able to do tasks which other shells may be able to do out of the box.
Con Not fully compatible with bash
There is a small chance you may have a bash script that doesn't work in zsh, although this is very very rare and most developers will never run into any issues.
Pro Easy to understand, Python-like syntax
Xonsh uses a syntax which is a superset of Python 3.4 plus some additional shell primitives. Because of the similarity to Python, which is famously an easy to understand programming language, the syntax of Xonsh is pretty easy to grasp too, even more so for Python programmers.
Pro Cross platform support
Xonsh has native cross-platform support.
Pro Command history on steroids - including output
Xonsh has one feature that can be considered particularly unique. It stores not just the commands you type, but their output, and doing a search on your history (configurably) can search the output as well.
Pro Fast startup
Dash has a very fast startup, this happens because the shell is started a lot of times during boot and dash minimizes the work it does during this process.
Pro Default shell on Debian systems
Dash is the default shell for Debian based systems (which includes Ubuntu).
Con Doesn't support all bash features
Dash does not support all bash features, sometimes called 'bashisms' unless explicitly pointed at /bin/sh.
Pro C-like shell
It's a C-like shell with tenex command-completion feature, which is very convenient.
Pro Organized documentation
All the documentation that's needed to use tcsh is located in man tcsh instead of being spread on various helper programs.
Con Limited support online
The support and number of guides and tutorials is rather limited for tcsh online because there are not many people who use it. At least compared to some of the other more popular alternatives.
Pro TclVFS
TclVFS allows you access files inside ZIP archives or on remote HTTP and FTP servers like you would local files. If you put "package require vfs::urltype; vfs::urltype::Mount http" in your ~/.eltclshrc you can do things like "file copy http://example.com/file /tmp/file" (HTTPS...
Pro A more consistent alternative to the POSIX shell
Tcl is a saner scripting language built on the same principle as the Unix shell (everything is a string) with more than a hint of Lisp. eltclsh makes it possible to use Tcl interactively with tab completion for both language constructs and file paths. The result is that you can develop a snippet of...
Con Stability
eltclsh crashes on mismatched delimiters.
Help millions of people make better decisions.
Each month, over 1.7 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.