Introducing
The Slant team built an AI & it’s awesome
Find the best product instantly
Add to Chrome
Add to Edge
Add to Firefox
Add to Opera
Add to Brave
Add to Safari
Try it now
4.7 star rating
0
What is the best alternative to fish (Friendly Interactive SHell)?
Ad
Ad
rc (shell)
All
4
Experiences
Pros
3
Cons
1
Top
Pro
Simple
rc is a very simple and easy to learn shell.
See More
Top
Con
Lacks return statement
rc has no return statement.
See More
Top
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 }
See More
Top
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.
See More
Hide
Get it
here
9
0
zsh
All
14
Experiences
Pros
11
Cons
3
Top
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.
See More
Top
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. Case-insensitive by default, too.
See More
Top
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.
See More
Top
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.
See More
Top
Con
Defaults are unfriendly for a long-time bash user
Expect to find a configuration you like (or use the configuration utility) to set reasonable preferences. Default zsh interaction is different enough to make you stutter through what used to be familiar workflows.
See More
Top
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.
See More
Top
Pro
Good bash compatibility
Things you've learned using bash will largely apply to zsh. Scripts written in bash will run with little to no modification.
See More
Top
Pro
Safer variable behaviour
Unlike Bash, zsh does not split unquoted variables by default, making it less error-prone.
See More
Top
Pro
Recursive globbing
ls **/*.log for example is supported by ZSH.
See More
Top
Pro
Great install procedure
Zsh will take you through a procedure which is roughly 30 minutes in length before during install. Through this procedure it asks you to set different options and customize the shell the way you want it to. Most of these settings are also found in other shells, but to customize them you have to go dig configuration files while zsh allows you to do it in the beginning.
See More
Top
Pro
Shared histories
If you spend a lot of time in the terminal, most likely you will have several terminal windows open. Zsh has great support for command line histories. The history is unique and shared through all the different instances.
See More
Top
Pro
Smart escaping
Zsh can determine the context of the command you're typing in and determine if it should escape characters if you're typing in a URI.
See More
Top
Pro
Pipe output to a temporary file:
Some programs don't support loading from stdin, but ZSH can store outputs to a temporary file, example: unzip =(curl http://example.com/someZipFile.zip)
See More
Top
Pro
Faster spelling correction
Zsh' s correct (or correctall) is vastly superior to Bash's attempt at spelling correction.
See More
Hide
See All
Experiences
Get it
here
308
43
Bash (Bourne-Again SHell)
All
21
Experiences
Pros
13
Cons
8
Top
Pro
Default shell on most systems
Bash is the default shell on virtually every UNIX system. Making it very portable across different systems and once you get used to it, you can use it everywhere.
See More
Top
Con
Extremely complicated and inconsistent rules
In Bash, exceptions are the rule, not even all being described by the main page. There are a grand total of 5 different ways of quoting, sometimes even when one does not want to, for instance in command substitutions. These are all based around preserving the literal meaning of every character, with an exception list. There is even an exception list to the exception list in 4 of the 5, regarding how the backslash behaves! The behavior of the backslash is also one of the quoting rules, so naturally, it also has an exception in how it works when it stands before a newline as compared to other characters. Bash has several layers of interpretations, all to be kept in mind: The ~ expands to the home of the current user. So if you store it in a variable, can you use it that way? Nope: tilde expansion comes before variable expansion. Aha, so that's how it works! Then, since applying quotation happens after redirections are set up, it must mean that redirecting within quotes works, right? Nope: there is an exception! If a redirection symbol is not quoted, quotation around the symbol is observed, but is not removed. So, since variable expansion also comes after setting up redirections, and no exceptions are described here in the man page, getting the name of a file from a variable and using it as a target should not work, right? No: redirection does not actually take place when the symbols are being read, the symbols are merely removed and are noted for later, right before when the actual command runs. Apart from 5 types of quotation, there are basically 2 quoting phases, 2 word splitting phases (with only one being controllable), and a tokenization phase on top of that. If you have a command, it could be an alias, a special built in, a non-special built in, a symbolic link to a file, a regular file, a function, with different rules regarding how they can be overridden, if redirection happens before or after arguments have been passed (what does "time my_command 2>&1 >log_file" do?), etc. This list is admittedly long, but it doesn't even scratch the surface of the bloat, complexity and inconsistencies of Bash.
See More
Top
Pro
Plenty of examples and tutorials
Since this is very mature shell there is a lot of great examples and other resources describing how to do almost everything.
See More
Top
Con
GPL3 is not compatible with Apple's lawyers
Apple, one of the largest distributors of UNIX systems, only ships an ancient version of bash that predates the iPhone. No one knows why as Apple hasn't said, but the version Apple includes in MacOS is from right before the license was updated to version 3 of the GNU GPL (General Public License). Other major companies (IBM, Microsoft) have had no problem shipping the latest version of bash, so it's unclear what Apple's lawyers are averse to. The GPL has always said that if you distributed a program, you granted everyone the right to use it freely. The biggest change in version 3 was the addition, "...and that includes software patents." This was necessary because back in 2006 Microsoft was demanding that any company that uses Linux pay them or get sued for infringing on their patents. They even took some companies, like TomTom, to court. No software which can be restricted retroactively like that is truly free, so GPL 3+ includes a clause saying that if you distribute the program, then you are also granting license to any patents you own that are necessary to run it. What patents Apple has that bash could possibly infringe on is a mystery, but the bigger question is, Why does Apple even care? So what if they are granting people the right to run bash without being sued by Apple. It's not like they were planning on doing that, right? Even though it is not bash's fault that it is not Apple Lawyer-approved, this is a CON for it because a lot of people use Apple products. While there are methods like brew to install a current version of bash, Apple does not make it obvious to their customers what they are missing.
See More
Top
Pro
Rich scripting capabilities on a single line
Want to run something 5 times? Write a throw-away loop: for i in 1 2 3 4 5; do date; done If you need it 100 times? Not a problem: for i in {1..100}; do date; done or: for ((i=0; i<100; ++i)); do date; done How about emailing yourself when remote server is back online? Sure thing: while ! ping -c1 example.com &>/dev/null; do date; sleep 5; done && mailx -s 'server is back!' me@myself.com
See More
Top
Con
Compatibility can be a curse
One of bash's claims to fame is compatibility with previous versions of itself and historic shells. But, doing that means that new features are often written in tortured, awkward syntax that is not easy to learn. For example, bash uses the POSIX way of doing arithmetic: to add 5+3 you must put the numbers in double parentheses with a dollar sign at the start: x=$((5+3)). It is true that many shells suffer from this same CON, but since bash is such an important shell, it has less wiggleroom to ditch clunky ideas that might break existing scripts.
See More
Top
Pro
POSIX compatible
See More
Top
Con
Lags behind on features compared to ZSH and Fish
People who wants power features or to customize their shell experience use zsh or fish.
See More
Top
Pro
Emacs-like keyboard control
By default, BASH uses shortcuts and concepts very similar to Emacs, so learning one often results in familiarity with the other.
See More
Top
Con
Filename expansion is not consistent
filename expansion is not consistent. "echo *" will print the names of the files in your current dir, if there are any... and will print "*" if there are none.
See More
Top
Pro
Rich built-in features
By default, there are many built-in features. They make really complex and reliable programs possible. In comparison to dash, for example, you can do the same tasks in less time and fewer lines of code.
See More
Top
Con
Non-intuitive shell expansion in for loops
If there are no .sh files, this will print mask itself: for filename in *.sh; do echo $filename done
See More
Top
Pro
Variables and aliases are listed the way they are built
alias and set will list aliases and variables in a format that can be run directly with no modifications. Even if the values contain \n. This is handy if you want to modify a value.
See More
Top
Con
No out-of-the-box command autocompletion
To have command autocompletion in bash you need to install third-party plug-ins.
See More
Top
Pro
Recursive globbing
ls **/*.log for example is supported by Bash if you set shopt -s globstar.
See More
Top
Con
One of the most dangerous languages around
What it is mostly used for are file system operations. Guess what it is bad at? Operating on files. It automatically splits and carries out filename expansion on every single string resulting from variable expansion and command substitution unless quoted, by default on whitespace, whilst spaces are very common in filenames. Before that, it even does pathname expansion, so woe to anywone who does not want to actually operate on files, but has a globbing metacharacter stored anywhere in a variable. This means what you store in a variable is not going to be what will ACTUALLY be accessed. If an empty variable is unquoted, it disappears completely due to word splitting, sometimes leading to applications signalling a missing parameter at a wrong position. If quoted however, said variables cannot be iterated over in a loop, no matter what character one uses for word splitting. If you use any globbing pattern with a command, be sure to use -- after the option arguments or if none are present, before starting the pattern with a mandatory ./ Otherwise, another Bash script run gone wrong or a hacker can create files named like an option ("-f", for instance) and your program will happily accept it as such, if it results from globbing. For interactive use, it is convenient. For programming, it is a no-go.
See More
Top
Pro
Man page is a trove of wonders
While the manual "page" is nearly a hundred pages long, it is actually surprisingly succinct and stuffed with good information. It is often better than Googling for answers when writing shell scripts. The way it is written makes it easy to stumble upon useful new programming features just by flipping through it . NOTE: If you find it dense and hard to read at the command line, look for the PDF version.
See More
Top
Pro
vi mode is more comprehensive than on other shells
Vi editing mode works without a glitch. "_" will print you the last argument of the latest command (zsh won't). VI mode is fast off the bat - You don't have to reset any variable (like "KEYTIMEOUT" in zsh) for that.
See More
Top
Pro
Copyright license is GPL 3+
Bash is licensed under the GNU General Public License ≥3, which gives much stronger assurances that the right to use it can't be restricted. For example, Microsoft would not be able to claim in court that, even though they've distributed Bash with the GPLv3, a license that explicitly grants people freedom, now Bash is essentially proprietary due to software patents and everyone who uses Bash owes them money. (This may sound ludicrous to those who were not alive when Microsoft tried a similar scheme against Linux fifteen years ago). The GPLv3 is a license that reflects the genuine ethical issues that arise when people give their time and skills to collaboratively build software. While most people wouldn't insist that their UNIX shell is licensed under the GPLv3+, it does matter and is a big PRO for Bash.
See More
Top
Pro
Built-in 'help'... helps a lot
Built-in 'help' provides quick and efficient help on builtins and keywords.
See More
Top
Pro
Rich scripting capabilities
BASH scripting is a rich and robust language.
See More
Hide
See All
Experiences
Get it
here
140
26
tcsh (shell)
All
3
Experiences
Pros
2
Cons
1
Top
Pro
C-like shell
It's a C-like shell with tenex command-completion feature, which is very convenient.
See More
Top
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.
See More
Top
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.
See More
Hide
Get it
here
17
9
Xonsh (The Xonsh Shell)
All
5
Experiences
Pros
5
Top
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.
See More
Top
Pro
Extensible
Most parts of xonsh are extensible. You can change tab-completer, prompt, history backend, aliases, functions and pack it to special package (called "xontrib") and put it on Github. The logic are clear and documented well.
See More
Top
Pro
Portable
The xonsh shell has AppImage that makes it Linux-portable.
See More
Top
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.
See More
Top
Pro
Cross platform support
Xonsh has native cross-platform support.
See More
Hide
Get it
here
51
10
DASH
All
6
Experiences
Pros
5
Cons
1
Top
Con
Doesn't support all bash features
Dash does not support all bash features, sometimes called 'bashisms' unless explicitly pointed at /bin/sh.
See More
Top
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.
See More
Top
Pro
Low memory usage, which matters a lot in embedded
It is designed to be very lightweight and has no support for shell specific extensions that are not POSIX.
See More
Top
Pro
Default shell on Debian systems
DASH is the default shell for Debian based systems due to it speed, full POSIX compliance and low overhead.
See More
Top
Pro
Full POSIX support
It's fully POSIX compatible, so if your script runs on dash it will probably run on all other shells.
See More
Top
Pro
A perfect clone
It's a clone of the original System V4 Bourne shell.
See More
Hide
Get it
here
23
8
sh
All
3
Experiences
Pros
2
Cons
1
Top
Con
Not suitable for interactive use
The Bourne shell has always been criticized (most notably by Bill Joy, author of csh) as being unfriendly for interactive use. It has no tilde (~) expansion. Limited file test operators. Limited math operators.
See More
Top
Pro
Truely the most broadly available shell
It may not be the best if you want power, but if you want to write a POSIX script that will run everywhere, it's a pretty good choice.
See More
Top
Pro
Most influential Unix shell alongside csh
Bourne shell introduced features such as piping, here documents, command substitution, variables, control structures for condition-testing and looping and filename wildcarding.
See More
Hide
9
7
Ion (shell)
All
15
Experiences
Pros
13
Cons
2
Top
Pro
Supports type-checking of assignments
All variable assignments may optionally specify a type, which will enforce that the supplies value is compatible with that type before storing it, returning an error if there's a mis-match.
See More
Top
Con
Still in development
There's a number of paper cuts that have yet to be addressed. It's been progressing very rapidly though. Some features have yet to be implemented, some logic bugs have yet to be fixed, and it's not been tested much in the wild. Very early in it's life as of 2017.
See More
Top
Pro
Features slicing syntax
Arrays are sliced by elements, and strings are sliced by graphemes.
See More
Top
Con
Unubiquitous
There's a big advantage to picking a shell which is ubiquitous, since you are likely to work with more than your own systems, and likely want the same or a similar experience there.
See More
Top
Pro
Easy to learn
The entire Rust ecosystem is known for having excellent, modern documentation, and Ion is no exception. Couple that with it having far less cruft (ie fewer things to learn) some syntactic and conceptual inspiration from Rust, and suddenly you have a very easy to learn (and still very powerful) shell.
See More
Top
Pro
Distinguishes between arrays and strings
Generally more type-safe, enabling explicitness, and allowing for powerful slicing and method syntax.
See More
Top
Pro
Faster than all other system shells
Ion actually manages to be faster than Dash -- simultaneously using less memory and packing much more functionality.
See More
Top
Pro
A simple, modern, and clean syntax
Syntax is much simpler than other shells, leading to very elegant and succinct scripts and command invocations.
See More
Top
Pro
Written in Rust
Shells written in C are often riddled with memory-based vulnerabilities that lead to high profile security flaws that are continually discovered decades later. GNU Bash's Shellshock vulnerability, for example, is an example of a vulnerability that Rust prevents. Rust raises the bar for minimum code quality standards by enforcing various restrictions on type/variable usage, and therefore Ion provides a high quality code base from the start.
See More
Top
Pro
Can be compiled as a static binary
There are no dependencies on C or C libraries (except for the minimum required to run on Linux). By opting for the MUSL target toolchain, a fully static binary can be generated and distributed to systems.
See More
Top
Pro
Color namespace with 24-bit color syntax
It is exceptionally easy to use 24-bit colors in the shell with Ion's c/color namespace. echo ${c::0x09F}Bluish text${c::0x630bg}with a brownish background${c::reset}
See More
Top
Pro
Method syntax enables a new level of capabilities
Offers a unique concept of string and array methods, whereby invoking the name of a method, and supplying arguments to it, you can perform otherwise complex text manipulation at expansion time. Also supports recursively processing the results of method expansions within method expansions.
See More
Top
Pro
Supports a namespaces concept
A special syntax allows for obtaining values from within special namespaces -- either namespaces that are built into the shell, such as the color namespace, or from plugins, such as the git plugin.
See More
Top
Pro
Supports a plugin architecture
Plugins may be integrated within Ion using a C FFI. These plugins can add additional methods and namespaces.
See More
Top
Pro
May be used as a library
Ion shell is featured within the distributed Concurr application, by the same author of Ion, which creates embedded instances of the Ion shell in the server for executing commands locally.
See More
Hide
See All
Experiences
Get it
here
12
2
Oh (shell)
All
3
Experiences
Pros
1
Cons
2
Top
Con
Unstable
It fails with errors and long Python tracebacks.
See More
Top
Pro
Concurrent
Because it's written in Go, Oh can also be thought of as a concurrent programming language.
See More
Top
Con
No configurable prompt
The only way to configure the prompt in order to use something else other than the default >, you have to change the source code of Oh.
See More
Hide
Get it
here
3
1
eltclsh
All
3
Experiences
Pros
2
Cons
1
Top
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 Tcl code interactively and then paste it in your script.
See More
Top
Con
Stability
eltclsh crashes on mismatched delimiters.
See More
Top
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 is currently not supported by TclVFS.)
See More
Hide
Get it
here
2
2
Built By the Slant team
Find the best product instantly.
4.7 star rating
Add to Chrome
Add to Edge
Add to Firefox
Add to Opera
Add to Brave
Add to Safari
Try it now - it's free
{}
undefined
url next
price drop