Bash Features
The table below lists most features that I think would make you choose one shell over another. It is not intended to be a definitive list and does not include every single possible feature for every single possible shell. A feature is only considered to be in a shell if in the version that comes with the operating system, or if it is available as compiled directly from the standard distribution. In particular, the C shell specified below is available on SunOS X.*, a considerable number of vendors now ship either tcsh or their own enhanced C shell instead (they don’t always make it obvious that they are shipping tcsh.
| Features | sh | csh | ksh | bash | tcsh | zsh | rc | es |
|---|---|---|---|---|---|---|---|---|
| Job control | Y | Y | Y | Y | Y | Y | N | N |
| Aliases | Y | Y | Y | Y | Y | Y | F | F |
| Shell functions | Y | N | Y | Y | N | Y | Y | Y |
| “Sensible” Input/Output redirection | Y | Y | Y | Y | Y | Y | Y | Y |
| Directory stack | F | Y | F | Y | Y | Y | F | F |
| Command history | Y | Y | Y | Y | Y | Y | L | L |
| Command line editing | N | N | Y | Y | Y | Y | L | L |
| Vi Command line editing | N | N | Y | Y | Y | Y | L | L |
| Emacs Command line editing | N | N | Y | Y | Y | Y | L | L |
| Rebindable Command line editing | N | N | Y | Y | Y | Y | L | L |
| User name lookup | Y | Y | Y | Y | Y | Y | L | L |
| Login/Logout watching | F | F | F | F | Y | Y | F | F |
| Filename completion | N | Y | Y | Y | Y | Y | L | L |
| Username completion | N | Y | Y | Y | Y | Y | L | L |
| Hostname completion | N | Y | Y | Y | Y | Y | L | N |
| History completion | N | N | Y | Y | Y | Y | L | L |
| Fully programmable Completion | N | N | Y | Y | Y | Y | N | F |
| Mh Mailbox completion | N | F | F | F | F | F | F | F |
| Co Processes | N | N | Y | Y | N | Y | N | N |
| Builtin arithmetic evaluation | Y | Y | Y | Y | Y | Y | N | N |
| Can follow symbolic links invisibly | Y | Y | Y | Y | Y | Y | N | N |
| Periodic command execution | F | F | F | F | Y | Y | F | F |
| Custom Prompt (easily) | Y | Y | Y | Y | Y | Y | Y | Y |
| Sun Keyboard Hack | N | N | N | N | N | N | N | N |
| Spelling Correction | N | N | N | Y | Y | Y | N | N |
| Process Substitution | N | N | Y | Y | N | Y | Y | Y |
| Underlying Syntax | sh | csh | sh | sh | csh | sh | rc | rc |
| Freely Available | Y | Y | Y | Y | Y | Y | Y | Y |
| Checks Mailbox | Y | Y | Y | Y | Y | Y | F | F |
| Tty Sanity Checking | N | N | N | N | Y | Y | N | N |
| Can cope with large argument lists | Y | N | Y | Y | Y | Y | Y | Y |
| Has a non-interactive startup file | N | Y | Y | Y | Y | Y | N | N |
| Has non-login startup file | Y | Y | Y | Y | Y | Y | N | N |
| Can avoid user startup files | Y | Y | Y | Y | Y | Y | Y | Y |
| Can specify startup file | Y | N | Y | Y | N | Y | N | N |
| Low-level command redefinition | N | N | Y | Y | N | Y | N | Y |
| Has anonymous functions | N | N | N | N | N | Y | Y | Y |
| List Variables | N | Y | Y | Y | Y | Y | Y | Y |
| Full signal trap handling | Y | N | Y | Y | N | Y | Y | Y |
| File no clobber ability | Y | Y | Y | Y | Y | Y | N | F |
| Local variables | N | N | Y | Y | N | Y | Y | Y |
| Lexically scoped variables | N | N | N | N | N | N | N | Y |
| Exceptions | N | N | N | N | N | F | N | Y |
Key to the table above.
Y Feature can be done using this shell.
N Feature is not present in the shell.
F Feature can only be done by using the shells function mechanism.
L The Readline library must be linked into the shell to enable this Feature.
Notes to the table above
1. The comparison targets POSIX.1-2024 sh, NetBSD-current csh, ksh93u+m 1.0.10, Bash 5.3, tcsh 6.24.16, Zsh 5.9.2, rc 1.7.4, and es 0.10.0.
2. POSIX sh is a language standard rather than one specific shell binary.
3. L identifies rc or es features that require a Readline-enabled build.
4. “Sensible” redirection is a subjective label, and the Sun keyboard item applies to specific hardware behavior.
5. Every shell remains subject to the operating system argument-size limit when it launches an external command.
6. The table records current capability, not syntax compatibility or a security ranking.


