Which is your preferred shell?
- ash
- bash
- Bourne shell
- CMD.EXE
- COMMAND.COM
- csh
- fish
- Hamilton C shell
- ksh
- Nushell
- pdksh
- PowerShell
- Qshell
- rc
- Scsh
- tcsh
- Thompson shell
- zsh
- Other - please say in thread!
This post is a wiki - please feel free to add/edit as needed (please follow the same format/alphabetical order).
A lightweight (92K) Bourne compatible shell. Great for machines with low
memory, but does not provide all the extras of shells like bash, tcsh, and
zsh.
an sh-compatible shell that incorporates useful features from the Korn shell
(ksh) and the C shell (csh). It is intended to conform to the IEEE POSIX
P1003.2/ISO 9945.2 Shell and Tools standard
Developed by Stephen Bourne at Bell Labs, it was a replacement for the Thompson shell
is the default command-line interpreter for the OS/2, eComStation, ArcaOS,
Microsoft Windows (Windows NT family and Windows CE family), and ReactOS
operating systems
is the default command-line interpreter for MS-DOS, Windows 95, Windows 98 and
Windows Me. In the case of DOS, it is the default user interface as well.
The main design objectives for the C shell were that it should look more like
the C programming language and that it should be better for interactive use.
a smart and user-friendly command line shell for Linux, macOS, and the rest of
the family.
a complete Unix shell environment for Windows
You can write programs to run faster with ksh than with either the Bourne
shell or the C shell, sometimes an order of magnitude faster. ksh has evolved
and matured with extensive user feedback.
a shell that uses pipelines and structured data to control any operating system
PD-ksh is a clone of the Korn shell
PowerShell is a cross-platform task automation solution made up of a
command-line shell, a scripting language, and a configuration management
framework. PowerShell runs on Windows, Linux, and macOS.
A shell on the IBM i operating system based on POSIX and X/Open standards
is a command interpreter for Plan 9 that provides similar facilities to UNIX’s
Bourne shell, with some small additions and less idiosyncratic syntax.
an open-source Unix shell embedded within Scheme
C shell with file name completion and command line editing
the first Unix shell, introduced in the first version of Unix in 1971, and was
written by Ken Thompson
a shell designed for interactive use, although it is also a powerful scripting
language
I use zsh
as my interactive shell.
For scripts though I am experimenting with nushell
.
I use zsh on my Mac and bash on our servers.
(PS did you edit the poll? Cos my vote disappeared - had to revote, anyone else who voted may need to revote as well)
Thanks for reminding me that I forgot Nushell
Oh, thanks for letting me know that editing the poll resets it. I won’t edit it anymore
I wasn’t aware it reset votes myself so it’s good to know. (There’s a 5 minute time-limit on editing polls)
Assuming you voted before, you’ll need to do so again, as I added Nushell to the list.
Let’s also experiment with something we mentioned a while back - pinning some of these polls to see if that helps more people notice them (as we get some many threads now)
I find it interesting that you’re only experimenting with using nushell for scripting and not as your interactive shell. I’ve played around briefly with nushell as an interactive shell, and have been meaning to try it out more as it seems quite cool.
Why are you sticking with zsh as your interactive shell?
Familiarity… Basically…
I want to keep my prompt, I want to keep my completions, and I don’t like a lot of the nushell builtins.
And most snippets in the wild (usually ment for sh
likes) work for zsh
nearly without changes. I do not like to remember to adjust them each time I copy them.
I live in Bash, but write my scripts in POSIX (sh
/bin/sh
) for maximum portability.
I have considered changing to another shell, but I like being able to use something that works out-of-the-box wherever I go.
Historically, sh
could mean Thompson shell or (later and more commonly) Bourne shell. That said, on my mac, for instance, sh
really means running bash
:
$ ls -l /private/var/select/sh
lrwxr-xr-x 1 root wheel /private/var/select/sh@ -> /bin/bash
From a syntax perspective it’s still portable though, no?
Yeah, for sure. I guess I’m thinking more about the tool used, where as talking about portable POSIX scripts is more about the language the scripts are written in.
I am currently on windows, I will try to move back to linux sometime in the future
I think Object Oriented Shell (Shells that pipe objects not string) are a very good idea
I like powershell a lot, i think nushell tries to replicate this OO style but maybe to a more unix oriented audience, so i try to use it from time to time and learn more about it
But bash is the only simple life and realistic option for linux
So in summary
I think fish is the best interactive shell. It’s not completely POSIX compatible but it’s close enough for day to day use. I switched from zsh to fish years ago and would recommend anyone using zsh to try it out. Fish provides a customized zsh experience, but out of the box without plugins. It also doesn’t have the compgen performance issues you get with zsh.
For shell scripting I’d stick with POSIX sh or bash.
I switched to Fish from Zsh and never looked back. That said, love the shoutout to scsh, which has the best manpage of all time (also Olin was a great professor, I learned compilers from him)
For ZSH I would think majority out there use it because of oh-my-zsh? https://ohmyz.sh/
I am myself a long term user and honestly this is the only reason I use ZSH, I couldn’t care less about it without the tools provided by that project.