You are on page 1of 9

Comparison of command shells

1

Comparison of command shells
A command shell is a command line interface computer program to an operating system.

General characteristics
Usual environment Usually invoked Introduced Platform-independent Default login Default script shell in shell in License Unicode Stream Native support Blocking of unsigned scripts available as statically linked, independent single file executable Bourne shell 7th Ed. UNIX sh 1977 Yes 7th Ed. UNIX 7th Ed. UNIX Yes Yes (arbitrary fds) POSIX shell No No Yes redirection CIM/WBEM

[1][2]

Proprietary, CDDL

[3][4]

[5]

POSIX

sh

1992

[6]
Yes

N/A

POSIX

N/A

Yes, if used by configured locale

Yes (arbitrary fds) Yes No No

N/A

bash (v4.0)

POSIX

bash, sh

1989

[7]
Yes

GNU, Mac OS X 10.3+

GNU, Haiku

GPL Yes

(arbitrary fds)

No

No

Yes

csh

POSIX

csh

1978 Yes

?

?

BSD No

Yes (stdin, out, out+err) No No Yes

tcsh

POSIX

tcsh, csh

1983

[8]
Yes

FreeBSD, formerly Mac OS X

?

BSD Yes

Yes (stdin, out, out+err) No No Yes

Scsh ksh (ksh93t+)

POSIX POSIX

scsh ksh

1994 1983

Yes

? AIX, HP-UX

? OpenSolaris

BSD-style Common Public License

?

Yes Yes

No

No

Yes

[9][10]
Yes

Yes

(arbitrary fds)

No

No

Yes

pdksh

POSIX

ksh, sh

1989 ? Yes

OpenBSD

[11]

OpenBSD

[11] Public Domain
No

Yes (arbitrary fds) No No Yes

zsh

POSIX

zsh

1990 Yes

Grml, Gobolinux

Grml

BSD-style Yes

Yes (arbitrary fds) No No Yes

ash

POSIX

sh

1989 Yes

Minix, BusyBox based systems

FreeBSD, NetBSD, Minix, BusyBox based systems

BSD-style Yes Yes (arbitrary fds) No No Yes

Windows cmd.exe

Win32

cmd

1993 No

Windows NT, Windows NT, 2000, XP, Server 2003, Vista 2000, XP, Server 2003, Vista ?

[12]

MS-EULA

[13]
Yes Yes No No Yes

TCC (formerly 4NT)

Win32

?

1993

No

?

Shareware

Yes

Yes (stdin, out, err)

No

No

No

Comparison of command shells
[13]
Yes Yes Yes Yes

2
Windows Server 2008, 7

Windows PowerShell

.NET

powershell

2006 No (3rd party in dev

Windows

MS-EULA

[14]

Server 2008, ) 7, Vista, XP

or BSD/GPL (PASH)

No

[15]

COMMAND.COM

DOS

command

1980 No (3rd party available

DOS, Windows 95, 98, ME ) ?

DOS, Windows 95, 98, ME

MS-EULA

[17]
No

Yes (stdin, out, COMn/LPT only) No No Yes

or BSD/GPL (free clones)

[16]

4DOS

DOS

?

1989

No

?

MIT License, with restrictions

No

Yes (stdin, out, err) Yes (stdin, out, err)

No

No

No ?

OS/2 cmd.exe rc

OS/2

cmd

1987

No

OS/2

OS/2

IBM-EULA

[18]

No

No

No

Plan 9, POSIX

rc

1989 Yes

Plan 9, Version 10 Unix

Plan 9, Version 10 Unix ? ?

Lucent Public License Yes Yes No No Yes

BeanShell Python shell

Java Python

? python, ipython

2005 1991

Yes

? ?

LGPL Python

Yes

Yes

? ?

No

Yes (bsh.jar) Yes on

Yes

Yes

Yes

No

Windows via py2exe

Ruby shell

Ruby

irb

1995 Yes

?

?

Ruby, BSD

1.9: Yes 1.8: limited Yes

? No

Yes with rubyscript2exe.rb

VMS DCL

[19]

OpenVMS

?

1977 ? No

VMS

VMS

? No

Yes (sys$input, sys$output assignment) No No No

Interactive features
Completion Directory stack Directory Implicit History Directory Change – If command is dir name changes to it Bourne shell No No No No No No No $  Yes (variable: $PS1) $  Yes (variable: $PS1) bash-<version number>$ % Yes (variable: $PS1) Yes (variable: $prompt > Yes (variable: $prompt Via functions Yes No Since SVr4 Yes Yes (popup) Command history History completion Spell checking Default user prompt Custom command prompt Aliases Binary prefix notation Job control Startup scripts

[20]

(pushd/popd) Window

POSIX shell

No Yes (extendable)

No

No

No Yes (optional) Yes (optional) Yes (optional)

Yes

No

No

No

Yes

bash (v4.0)

Yes

No

Yes

Yes

No

Yes

No

Yes

Yes

csh

Yes (via the ESC key)

Yes

No

Yes

Yes

No

Yes

No

Yes

Yes

tcsh

Yes (extendable)

Yes

No

Yes

Yes

experimental

Yes

No

Yes

Yes

Comparison of command shells

3
> Yes No (macro and procedure definitions) Yes Yes Yes

Scsh No No No No No No No

ksh (ksh93t+)

Yes (extendable)

$ No No No Yes Yes No

Yes (variable: $PS1, and more) Yes No Yes Yes

pdksh

Yes

No

No

No

Yes

?

No

$

Yes (variable: $PS1)

Yes

No

Yes

Yes

zsh

Yes (extendable)

Yes

No

Yes (optional)

<hostname>% Yes Yes Yes

Yes (variable: $PS1, and more) Yes No Yes Yes

ash

No

Yes

No

No

Yes

Yes

No

$

Yes (variable: $PS1)

Yes Yes via doskey)

No

Yes

Yes

Windows cmd.exe Yes (partial) Yes No No Yes (F7) Yes (F8) No

<path>>

Yes variable: %PROMPT%)

(environment ("macros",

No

No

Yes

TCC (formerly 4NT) Yes (partial) Yes Yes Yes Yes Yes No

[<path>]

Yes (environment variable: %PROMPT) Yes

? No Yes (4start)

Windows PowerShell Yes (extendable)

Yes (all location types) Yes No Yes Yes (F8) No

PS <path>>  Yes (function: prompt) Yes Yes Yes Yes

[21]
<path or drive

COMMAND.COM No No No No No

Yes (environment variable: %PROMPT%)

[22][23]

No

[22][23]

No

name>>

Yes (using SET or registry) ? Yes No Yes (4start) No No No

[24]

4DOS Yes Yes Yes Yes Yes Yes No

<path>>

Yes (environment variable: %PROMPT)

OS/2 cmd.exe Yes

? No No Yes

? No

[<path>]

Yes (environment variable: %PROMPT%) No No No No

rc Yes

?

term%, ; No No Yes

Yes (function: prompt, or variable: $prompt) Yes (functions) No

Handled by rio Yes

[25]

[25]

Yes

[25]

No

BeanShell Yes

? No No Yes

? No

bsh %

Yes (variable: bsh.prompt, or method: getBshPrompt)

?

?

? Yes (.bshrc)

Python shell

Yes (provided by the rlcompleter module or IPython) Yes (provided by IPython) No No Yes Yes (provided by IPython) No

>>> Yes (variable: sys.ps1) Yes (functions)

? Yes Yes ($PYTHONSTARTUP or ipythonrc)

Comparison of command shells

4
irb(main):001:0> No Yes Yes ? Yes Yes (.irbrc)

Ruby shell Yes

Yes (pass a block to Dir.chdir method) No No Yes

Yes (with UtilityBelt gem)

VMS DCL No No No No Yes No No

$

Yes (SET PROMPT command) Yes Yes Yes Yes (login.com)

Programming features
Functions Exception Search and replace Parallel Variadic Default Named Lambda eval Pseudorandom Bytecode handling on variables assignment functions arguments parameters functions function number generation Bourne shell Yes since SVr2 Yes Yes (via trap) Yes (via trap) Yes (via trap) No No ? Yes (via string functions and regular expressions) No No Since SVr2 Yes No No No Yes No No

POSIX shell

No Yes (via ${//} syntax) No Yes (via ${:s//} syntax

No

No

No

No

Yes

No Yes ($RANDOM) No No

No

bash (v4.0)

Yes No No

No No No

Yes No No

Yes No No

No No No

No No No

Yes Yes Yes

No No No

csh tcsh

Scsh

Yes

No

Yes

No

No

Yes

Yes

Yes (compiler Yes is (random-integer, Scheme48 random-real) virtual machine, "scshvm") Yes (compiler is called "shcomp") No Yes (built-in command "zcompile") No

ksh (ksh93t+) Yes Yes (via trap)

Yes (via ${//} syntax and builtin commands)

? Yes Yes

Yes (for user-defined "types")

No

Yes

Yes ($RANDOM)

pdksh

Yes

Yes (via trap)

No

?

Yes

Yes

No

No

Yes

Yes ($RANDOM)

zsh Yes Yes Yes (via ${:s//} and ${//} syntax)

? Yes Yes No No Yes Yes ($RANDOM)

ash

Yes Yes (via "call :label")

Yes (via trap)

No Yes (via set %varname:expression syntax) Yes (via %@replace[ ] function) Yes (-replace operator)

No

Yes

Yes

No

No

Yes

No

Windows cmd.exe

No

No

No

No

No

No

No

Yes (%random%) Yes (%@random[ ] function) Yes

No

TCC (formerly 4NT)

Yes

No

No

No

No

No

No

Yes

No

Windows PowerShell

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes, automatic

Comparison of command shells

5
No Yes (via %@replace[ ] function) No No ? No No ? No No No No ? No Yes No No No Yes (%@random[ ] function) No No Yes No

COMMAND.COM 4DOS

No

No

Yes

No

No

OS/2 cmd.exe rc BeanShell Python shell

No Yes Yes

No Yes Yes

No ? ?

No Yes No

No Yes No

No ? No

No No No

No Yes Yes

No No Yes Yes (standard CPython, IronPython or Jython) Yes (NetRuby, JRuby, version 1.9/YARV) No

Yes

Yes

Yes (via string methods and regular expressions)

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Ruby shell Yes Yes Yes (via string functions and regular expressions) Yes Yes Yes Yes Yes Yes Yes

VMS DCL

Yes

Yes

No

No

No

No

No

No

No

No

String and filename matching
Pattern Matching (regular expressions built-in) Bourne shell POSIX shell bash (v4.0) csh tcsh Scsh ksh (ksh93t+) No No Yes No Yes Yes Yes No Yes ash Windows cmd.exe TCC (formerly 4NT) Windows PowerShell COMMAND.COM 4DOS No Yes (via the findstr /r command) Limited support Pattern Matching (globbing) Globbing qualifiers (filename generation based on file attributes) No No No No No No No No Yes No ? Recursive globbing (generating files from any level of subdirectories) No No Yes (**/...) No No No Yes (with set -G, no following of symlinks) No Yes (**/... or ***/... to follow symlinks) No No

Yes (*, ?, [...]) Yes (*, ?, [...]) Yes (*, ?, [...], {...}) Yes Yes Yes Yes (*, ?, [...]) Yes Yes (*, ?, [...], [26] ext'd globbing ) Yes Yes (*, ?)

pdksh zsh

Yes (*, ?, [...])

?

Yes (via FOR /R) ?

Yes (full regex [27] support) No No

Yes (*, ?, [...]) Yes (*, ?) Yes (*, ?, [...]) ? ? No Yes (via FOR /R)

?

Comparison of command shells

6
? ?

OS/2 cmd.exe rc BeanShell Python shell Ruby shell

No No Yes Yes Yes No

Yes (*, ?) Yes ? Yes Yes (via Dir.glob method) Yes

No ? Yes (via glob module) ?

No ? Yes (via glob module) Yes (via Dir.glob method) Yes (via [SUBDIR...] )

VMS DCL

No

Inter-process communication
Pipes Command substitution Process substitution Subshells TCP/UDP connections as streams No

Bourne shell

bytes concurrent bytes concurrent bytes concurrent bytes concurrent bytes concurrent text bytes (may contain serialized objects if print -C is used) concurrent bytes concurrent bytes concurrent bytes concurrent text concurrent

Yes

No

Yes

POSIX shell

Yes

No Yes (if system supports /dev/fd/<n> or named pipes No

Yes

No

bash (v4.0)

Yes

Yes

Yes (client only)

csh

Yes

Yes

No

tcsh

Yes ?

No ?

Yes ?

No Yes

Scsh ksh (ksh93t+)

Yes ($(...) and ${<space>...;})

Yes (if system supports /dev/fd/<n>

Yes

Yes (and SCTP support, client only)

pdksh

Yes

No

Yes

No Yes (client and server but only TCP) No

zsh

Yes

Yes

Yes

ash

Yes Yes (via FOR /F command) Yes (via FOR /F command)

No

Yes Yes (Backtick: ` in for /f usebackq) Limited, via %@execstr[ ] and %@exec[ ] Yes

Windows cmd.exe TCC (formerly 4NT)

No ?

No

text

No

Windows PowerShell COMMAND.COM

objects concurrent text sequential temporary files

Yes

No

Yes

No

No

No

No

Comparison of command shells

7
? Limited, via %@execstr[ ] and %@exec[ ] ?

4DOS

text sequential temporary files text concurrent text concurrent not supported objects (when using IPython+IPipe) not supported text (via PIPE command)

Yes (via FOR /F command)

No

OS/2 cmd.exe rc

No

No Yes (via: <{cmd} if system supports /dev/fd/<n>) ? Yes (via subprocess module) Yes No

No

Yes

Yes

No

BeanShell Python shell

? Yes Yes No

? Yes Yes (Backtick: `) Yes (spawn)

Yes Yes Yes Yes (server TCP only)

Ruby shell VMS DCL

References
[1] A platform independent version (http:/ / www. collyer. net/ who/ geoff/ v7sh. tar) based on the historical UNIX V7 original source code is available from Geoff Collyer (http:/ / www. collyer. net/ who/ geoff/ ) [2] A platform independent version (ftp:/ / ftp. berlios. de/ pub/ schily/ ) based on the SVr4/Solaris source code is available from Jörg Schilling [3] The historic UNIX V7 version is available under a BSD-style license (http:/ / minnie. tuhs. org/ Archive/ Caldera-license. pdf) through the Unix Heritage Society and others. [4] The SVr4 (OpenSolaris) version http:/ / src. opensolaris. org/ source/ xref/ onnv/ onnv-gate/ usr/ src/ cmd/ sh/ is available under CDDL, older versions (except UNIX V7) are available under a AT&T proprietray license. However, most extent versions (AIX, IRIX64, HPUX, Tru64) remain under AT&T licence. [5] IEEE (6 December 2001). 1003.1 Standard for Information Technology – Portable Operating System Interface (POSIX): Shell and Utilities, Issue 6. [6] As part of IEEE Std.1003.2-1992 (POSIX.2); integrated into IEEE Std.1003.1 with the 2001 revision. [7] Brian Fox (forwarded by Leonard H. Tower Jr.) (7 June 1989). "@wheat-chex.ai.mit.edu Bash is in beta release! (news:8906080235. AA01983)". [news:gnu.announce gnu.announce]. (Web link) (http:/ / groups. google. com/ group/ gnu. announce/ msg/ a509f48ffb298c35?hl=en). Retrieved 28 October 2010. [8] Ken Greer (3 October 1983). "C shell with command and filename recognition/completion". [news:net.sources net.sources]. (Web link) (http:/ / groups. google. com/ group/ net. sources/ msg/ 7073bf41cc5da330?hl=en). Retrieved 29 December 2010. [9] Ron Gomes (9 June 1983). "Toronto USENIX Conference Schedule (tentative)". [news:net.usenix net.usenix]. (Web link) (http:/ / groups. google. com/ group/ net. usenix/ msg/ fa6e1f7de3b63bba?hl=en). Retrieved 29 December 2010. [10] Guy Harris (10 October 1983). "csh question". [news:net.flame net.flame]. (Web link) (http:/ / groups. google. com/ group/ net. flame/ msg/ 4f868085b65af530?hl=en). Retrieved 29 December 2010. [11] Default shell in OpenBSD (http:/ / www. openbsd. org/ faq/ faq10. html#rootshell) is ksh (pdksh). [12] Command extensions enabled, or "cmd /x". [13] Windows component – covered by a valid license for Microsoft Windows [14] PASH, a third-party remake, is in development and almost half-finished (http:/ / pash. sourceforge. net/ ). Activity seems to have stagnated (http:/ / igorshare. wordpress. com/ 2008/ 04/ 06/ pash-cross-platform-powershell-is-out-in-the-wild-announcement/ #comment-456) early 2009 (https:/ / launchpad. net/ pash/ + announcement/ 1912). [15] Windows PowerShell is installed with Windows 7, however, it is an optional download for users of Windows Vista or Windows XP. [16] Third-party re-implementations, such as DosBox, Wine, and FreeDOS are available. [17] MS-DOS and Windows component – covered by a valid license for MS-DOS or Microsoft Windows [18] OS/2 component – covered by a valid license for OS/2 [19] "HP OpenVMS DCL Dictionary" (http:/ / h71000. www7. hp. com/ doc/ 732final/ 9996/ 9996pro_contents. html). . Retrieved 23 March 2009. [20] Many shells in *nix environments change the root user's prompt to '#'. [21] PowerShell exposes more than just the file system as a navigable system: Windows Registry, functions, aliases, variables, certificate store, credential store etc. The location types are extensible through a provider architecture. Common commands will work with any compliant provider [22] Added by TSR programs such as DOSKey

Comparison of command shells
[23] Available in DR-DOS via the "history" command in config.sys; see this link (http:/ / www. drdos. com/ dosdoc/ usergeng/ 09ugch9. htm#1309) [24] Limited support via AUTOEXEC.BAT. [25] Handled by rio, GNU readline, editline or vrl [26] Zsh offers an almost overwhelming variety of globbing options (http:/ / zsh. sourceforge. net/ Guide/ zshguide05. html#l135). [27] PowerShell leverages the full .NET regular expression engine which features named captures, zero-width lookahead/-behind, greedy/non-greedy, character classes, level counting etc.

8

External links
• Linux Magazine: Bash vs. Vista PowerShell (http://w3.linux-magazine.com/issue/78/Bash_vs. _Vista_PowerShell.pdf) • IEEE. 1003.1 Standard for Information Technology – Portable Operating System Interface (POSIX): Shell and Utilities, Issue 7 (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html)

Article Sources and Contributors

9

Article Sources and Contributors
Comparison of command shells  Source: http://en.wikipedia.org/w/index.php?oldid=500004822  Contributors: 121a0012, Ahy1, Albing, Alfps, Apotheon, Beavermania3354, Blanford robinson, Boaf, Booch, Buhman, Bukzor, Carpetsmoker, Catena, Charles dye, Chealer, Chowbok, Claunia, Csant, CyberSkull, DenisKrivosheev, Djholl, Doctor J, Donhalcon, Drknkn, Drpickem, Dum8d0g, Dustin Howett, ENeville, EncMstr, Exidor, Falcotron, Flanakin, Francis abraham, FutureDomain, Gaius Cornelius, Ghettoblaster, Gisburn, Grawity, Gudeldar, Gustavb, H2g2bob, Harryboyles, Helpsloose, Hgrosser, Infofarmer, Jacj, Janizary, Jfultz, Jonsafari, Jsnover, Justinchudgar, Kaiserkarl13, Kappa, Kesla, Lambiam, Lost.goblin, Mbell, Mcpusc, Mfarah, Minghong, Mkgardner, Msnicki, Nealmcb, Newmanbe, OMouse, Ohconfucius, P0lyglut, PSIplus, Pabouk, R'n'B, Raucanum, Repelsteeltje, RexNL, S1kjreng, Schily, Scientus, Sietse Snel, Simxp, SquidInc, Stephane Chazelas, Steppres, Takeshita kenji, Tedickey, The LMOE, Tomgibbons, Trasz, Unimath, Unixguy, Useerup, Weenie1, Wermlandsdata, Wfaulk, Whiteknox, Whitis, Ysangkok, ZZyXx, Zeus, Zoney, Zxcvbnm, Александр Цамутали, 195 anonymous edits

License
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/