sh csh ksh bash tcsh zsh rc esJob control N Y Y Y Y Y N NAliases N Y Y Y Y Y N NShell functions Y(1) N Y Y N Y Y Y"Sensible" Input/Output redirection Y N Y Y N Y Y YDirectory stack N Y Y Y Y Y F FCommand history N Y Y Y Y Y L LCommand line editing N N Y Y Y Y L LVi Command line editing N N Y Y Y(3) Y L LEmacs Command line editing N N Y Y Y Y L LRebindable Command line editing N N N Y Y Y L LUser name look up N Y Y Y Y Y L LLogin/Logout watching N N N N Y Y F FFilename completion N Y(1) Y Y Y Y L LUsername completion N Y(2) Y Y Y Y L LHostname completion N Y(2) Y Y Y Y L LHistory completion N N N Y Y Y L LFully programmable Completion N N N N Y Y N NMh Mailbox completion N N N N(4) N(6) N(6) N NCo Processes N N Y N N Y N NBuiltin artithmetic evaluation N Y Y Y Y Y N NCan follow symbolic links invisibly N N Y Y Y Y N NPeriodic command execution N N N N Y Y N NCustom Prompt (easily) N N Y Y Y Y Y YSun Keyboard Hack N N N N N Y N NSpelling Correction N N N N Y Y N NProcess Substitution N N N Y(2) N Y Y YUnderlying Syntax sh csh sh sh csh sh rc rcFreely Available N N N(5) Y Y Y Y YChecks Mailbox N Y Y Y Y Y F FTty Sanity Checking N N N N Y Y N NCan cope with large argument lists Y N Y Y Y Y Y YHas non-interactive startup file N Y Y(7) Y(7) Y Y N NHas non-login startup file N Y Y(7) Y Y Y N NCan avoid user startup files N Y N Y N Y Y YCan specify startup file N N Y Y N N N NLow level command redefinition N N N N N N N YHas anonymous functions N N N N N N Y YList Variables N Y Y N Y Y Y YFull signal trap handling Y N Y Y N Y Y YFile no clobber ability N Y Y Y Y Y N FLocal variables N N Y Y N Y Y YLexically scoped variables N N N N N N N YExceptions N N N N N N N Y