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
Linux
What are the best Linux shells?
7
Options
Considered
87
User
Recs.
Jan 30, 2024
Last
Updated
Related Questions
Activity
Have feedback or ideas?
Join our community
on Discord
Ad
7
Options
Considered
Best Linux shells
Price
Platforms
License
--
zsh
-
-
-
--
fish
-
-
-
--
bash
-
-
-
--
NuShell
-
Linux, macOS, Windows
MIT
--
ksh
-
-
-
See Full List
--
zsh
My Rec
ommendation
for
zsh
My Recommendation for
zsh
All
15
Experiences
1
Pros
11
Cons
3
Top
Pro
•••
Customizable
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
IndustriousAgon's Experience
Extremely buggy ecosystem and bad performance
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
•••
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
•••
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
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
•••
Faster spelling correction
Zsh' s correct (or correctall) is vastly superior to Bash's attempt at spelling correction.
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
•••
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
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
•••
Recursive globbing
ls **/*.log for example is supported by ZSH.
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
•••
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
Hide
See All
Get it
here
Recommend
34
4
--
fish
My Rec
ommendation
for
fish
My Recommendation for
fish
All
20
Experiences
2
Pros
14
Cons
4
Top
Pro
•••
Auto indentation when creating functions
When writing functions in an interactive shell, it will auto-indent as needed for if, for, function, etc.
See More
Top
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 solve the issue for vim.
See More
Ken Goad's Experience
Fish blows the others out of the water, there's no comparison. The top two cons I'm seeing writing this: "no undo support" which is just like every other shell so invalid complaint. And "weird syntax". Whatever that means. I implore you to completely ignore them. Zsh is at the top because it's just bash but better, and bash is above fish because it's the default and people hate trying new things even though technical jobs tend to involve having to learn new things every week anyways. What's more, you can actually still use bash and/or zsh and use fish. Fish automatically reads your config profiles and works with them, and you can run bash commands right from fish with bash -c, or install the replay plugin. I can't live without it anymore, and I feel pity for those haters who've so briskly brushed into the garbage.
See More
Top
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).
See More
Top
Con
•••
Very slow
Much of the functionality in Fish was not written with performance in mind.
See More
IndustriousAgon's Experience
Weird syntax
See More
Top
Pro
•••
Awesome, consistent, not-confusing sytax
The following, for example: for file in (find . -name "*.foo" -type f) fgrep -H "something" $file echo "hello" $file end | grep -v "hello" Will run the for loop, take all the stdout from it (both the fgrep and echo), and then pipe it through the final grep command.
See More
Top
Con
•••
No undo support
There is no included undo feature currently.
See More
Top
Pro
•••
Intuitive shell expansion in "for" loops
Unlike bash, this won't return you string *.sh if no .sh files are found for filename in *.sh echo "$filename" end
See More
Top
Con
•••
Doesn't support history expansion ("!!")
Fish has no support for !!, 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 that do it is an annoyance to be considered. For sudo !!, this can also be achieved by making this custom function: function sudo if test "$argv" = !! eval command sudo $history[1] else command sudo $argv end end
See More
Top
Pro
•••
Adding, removing and editing aliases is extremely easy
See More
Top
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 files.
See More
Top
Pro
•••
Excellent documentation
It has a great tutorial. And the official documentation is clear, full of eloquent examples, and to the point.
See More
Top
Pro
•••
Pretty usable even without plugins
Everything you need from oh-my-zsh is available on default fish, don't need to install any plugins. And even better, fish is smaller than zsh.
See More
Top
Pro
•••
Creates completion files from manual pages
Fish_update_completions parses manual pages installed on the system, and attempts to create completion files in the fish configuration directory.
See More
Top
Pro
•••
Less ambiguous lists
Here is a sample. Notice that there are 2 files with spaces in names. ls produces a valid list, and for loop correctly iterated through its values. ➤ for a in (ls); ls -l $a; end -rw-rw-r-- 1 sashka sashka 0 Apr 19 03:16 alma mater.txt -rw-rw-r-- 1 sashka sashka 0 Apr 19 03:16 whatever i want.txt sh scripts tend to be fragile when there are lists containing values with spaces. Also: ➤ echo $PATH /usr/bin /bin /usr/sbin /sbin /usr/local/bin ➤ echo $PATH[1] /usr/bin ➤ echo $PATH[-1] /usr/local/bin
See More
Top
Pro
•••
Interactive searchable history
Fish has by far the best way to work with history, everything is automatically searchable. It works in the way you expect. No learning required.
See More
Top
Pro
•••
Fisherman - a fast, modern plugin manager for fish
Large test coverage, micro-second shell start, compatibility with plugins from other existing frameworks such as Tackle, Oh My Fish and Wahoo, cache system, offline index, the Fishery and other features.
See More
Top
Pro
•••
Configuration framework for fish shell
Fish community maintains Oh My Fish, which is a shell framework inspired on Oh My Zsh awesome design and name. It offer a lot of beautiful prompt themes and awesome plugins, is lightweight, awesome and very simple to use.
See More
Top
Pro
•••
Universal variables
You can define Universal variables, which are shared instantaneously through all running fish sessions and persists through shell restarts.
See More
Hide
See All
Get it
here
Recommend
14
2
--
bash
My Rec
ommendation
for
bash
My Recommendation for
bash
All
13
Pros
11
Cons
2
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
•••
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
•••
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
•••
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
•••
POSIX compatible
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
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
Pro
•••
Built-in 'help' helps a lot
Builtin 'help' provides quick and efficient help on builtins and keywords.
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
Pro
•••
Recursive globbing
ls **/*.log for example is supported by Bash if you set shopt -s globstar.
See More
Top
Pro
•••
Rich scripting capabilities
BASH scripting is a rich and robust language.
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
•••
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
Hide
See All
Recommend
8
2
--
NuShell
My Rec
ommendation
for
NuShell
My Recommendation for
NuShell
All
3
Pros
1
Cons
1
Specs
Top
Con
•••
All the tools like grep, awk, find, sed, head, tail you're used to are suddenly useless
It tries to be a programming language, scripting language and shell at the same time and sucks at all of those.
See More
Top
Pro
•••
Structured Data as Output
NuShell assumes the output should be a structured data from the beginning. It outputs as tables. That helps you to filter, sort and search the output quite easily.
See More
Specs
Platforms:
Linux, macOS, Windows
License:
MIT
Hide
See All
Get it
here
Recommend
12
3
--
ksh
My Rec
ommendation
for
ksh
My Recommendation for
ksh
Hide
Get it
here
Recommend
2
--
PowerShell
My Rec
ommendation
for
PowerShell
My Recommendation for
PowerShell
All
3
Experiences
1
Cons
1
Specs
Top
Con
•••
Slow at startup
See More
DeterminedGugalanna's Experience
Manages to feel slow
See More
Specs
Platforms:
Windows, Linux, Mac
Hide
See All
Get it
here
Recommend
2
4
--
tcsh (shell)
My Rec
ommendation
for
tcsh (shell)
My Recommendation for
tcsh (shell)
Hide
Get it
here
Recommend
Don't see your favorite option? Add it.
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
One sec!
Are you sure that you want to abandon your hard work?
Delete Work
Continue working
{}
undefined
url next
price drop