Bash Features

· Published · 2 min read

Linux operator following a protected Bash execution path through quoting, expansion, conditions, functions, pipelines, parallel jobs, cleanup, and verified results

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.

Bash operator map covering identity and mode, expansion and quoting, arrays and control flow, file descriptors and processes, failure cleanup, testing, and the execution lifecycle
A Bash script moves from interpreter selection through controlled expansion, execution, status capture, cleanup, and verification. Open the original-resolution map.
Featuresshcshkshbashtcshzshrces
Job controlYYYYYYNN
AliasesYYYYYYFF
Shell functionsYNYYNYYY
“Sensible” Input/Output redirectionYYYYYYYY
Directory stackFYFYYYFF
Command historyYYYYYYLL
Command line editingNNYYYYLL
Vi Command line editingNNYYYYLL
Emacs Command line editingNNYYYYLL
Rebindable Command line editingNNYYYYLL
User name lookupYYYYYYLL
Login/Logout watchingFFFFYYFF
Filename completionNYYYYYLL
Username completionNYYYYYLL
Hostname completionNYYYYYLN
History completionNNYYYYLL
Fully programmable CompletionNNYYYYNF
Mh Mailbox completionNFFFFFFF
Co ProcessesNNYYNYNN
Builtin arithmetic evaluationYYYYYYNN
Can follow symbolic links invisiblyYYYYYYNN
Periodic command executionFFFFYYFF
Custom Prompt (easily)YYYYYYYY
Sun Keyboard HackNNNNNNNN
Spelling CorrectionNNNYYYNN
Process SubstitutionNNYYNYYY
Underlying Syntaxshcshshshcshshrcrc
Freely AvailableYYYYYYYY
Checks MailboxYYYYYYFF
Tty Sanity CheckingNNNNYYNN
Can cope with large argument listsYNYYYYYY
Has a non-interactive startup fileNYYYYYNN
Has non-login startup fileYYYYYYNN
Can avoid user startup filesYYYYYYYY
Can specify startup fileYNYYNYNN
Low-level command redefinitionNNYYNYNY
Has anonymous functionsNNNNNYYY
List VariablesNYYYYYYY
Full signal trap handlingYNYYNYYY
File no clobber abilityYYYYYYNF
Local variablesNNYYNYYY
Lexically scoped variablesNNNNNNNY
ExceptionsNNNNNFNY

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.

 

Related technical notes

Mail queue investigation separating deferred traffic, SMTP responses, route health, and safe diagnostic evidenceLinux, MTA & Security · Jul 20, 2026 · 3 min read

Postfix Queue Backlog: A Safe Diagnostic Runbook

Diagnose a Postfix backlog from queue age, destination groups, SMTP responses, host health, DNS, and route evidence before changing retries or concurrency.

Technical review

Need this checked against your own sending system?

Share the domain, headers, bounces, provider warning, logs, or infrastructure symptom and NitWings will identify the practical next step.

Schedule a Technical Review
Advertisement