Comparison of command shells
Page Module:Message box/ambox.css has no content.Page Template:Multiple issues/styles.css has no content.
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
Page Module:Message box/ambox.css has no content.
|
Template:Short description Script error: No such module "labelled list hatnote". Template:DMCA
This article catalogs comparable aspects of notable operating system shells.
General characteristics
Template:Sticky header Template:Sort-under
| Shell | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | License | Template:Verth | Template:Verth | Mouse support | Unicode support |
ISO 8601 support |
Template:Verth | Stream redirection | Configurability | Startup/shutdown scripts |
Template:Verth | Logging | Template:Verth |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Thompson shell | UNIX | sh | 1971 | Template:Screen reader-only | UNIX | UNIX | Template:Screen reader-only | Yes | Text-based CLI | No | No | Template:Screen reader-only | Yes | Template:Screen reader-only | Template:Screen reader-only | Template:Screen reader-only | Template:Screen reader-only | Template:Screen reader-only | Template:Screen reader-only |
| Bourne shell 1977 version | 7th Ed. UNIX | sh | 1977 | Yes[1] | 7th Ed. UNIX | 7th Ed. UNIX, | Proprietary[2] | Yes | Text-based CLI | No | No | Template:Screen reader-only | Yes | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content..profile) |
Yes (Unix feature) |
No | Yes |
| Bourne shell current version | Various UNIX | sh | 1977 | Yes[3] | SunOS-5.x, FreeBSD[4] | SunOS-5.x | CDDL[5][better source needed] | Yes | Text-based CLI | No | Yes[nb 1][better source needed] | Template:Screen reader-only | Yes | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content..profile) |
Yes (Unix feature) |
Yes[nb 2] | Yes |
| POSIX shell[6] | POSIX | sh | 1992[7] | Template:Screen reader-only | Template:Screen reader-only | POSIX | Template:Screen reader-only | Template:Screen reader-only | Text-based CLI | No | Yes if used by configured locale |
Template:Screen reader-only | Yes | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (via variables and options) |
Unspecified (Page Template:Mono/styles.css has no content..profile given as an example) |
Yes (Unix feature) |
Yes | Template:Screen reader-only |
| bash (v4) | POSIX | bash, sh | 1989[8] | Yes | GNU, Linux (default for root), macOS 10.3–10.14 | GNU, Linux, Haiku, macOS 10.3–10.14 | GPL | Yes | Text-based CLI | No | Yes[9][better source needed] | Yes (Page Template:Mono/styles.css has no content.printf builtin) |
Yes | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content./etc/profile, Page Template:Mono/styles.css has no content..bash_profile, Page Template:Mono/styles.css has no content..bash_login, Page Template:Mono/styles.css has no content..profile, Page Template:Mono/styles.css has no content..bashrc) |
Yes (Unix feature) |
Yes | Yes |
| csh | POSIX | csh | 1978 | Yes | SunOS | ? | BSD | Yes | Text-based CLI | No | No | ? | Yes | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stdout+stderr) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content.~/.cshrc, Page Template:Mono/styles.css has no content.~/.login, Page Template:Mono/styles.css has no content.~/.logout) |
Yes (Unix feature) |
Yes | Yes |
| tcsh | POSIX | tcsh, csh | 1983[10] | Yes | FreeBSD (former default for root),[11] formerly Mac OS X | ? | BSD | Yes | Text-based CLI | No | Yes | ? | Yes | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stdout+stderr) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content./etc/csh.cshrc, Page Template:Mono/styles.css has no content./etc/csh.login, Page Template:Mono/styles.css has no content.~/.tcshrc, Page Template:Mono/styles.css has no content.~/.cshrc, Page Template:Mono/styles.css has no content.~/.history, Page Template:Mono/styles.css has no content.~/.login, Page Template:Mono/styles.css has no content.~/.cshdirs) |
Yes (Unix feature) |
Yes | Yes |
| Hamilton C shell | Win32, OS/2 | csh | 1988[12] | Yes (OS/2 version no longer maintained) |
Optional | Optional | Proprietary | No | Text-based CLI | No | No | Yes (-t timestamp operator) |
Yes | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stdout+stderr) |
Yes (via variables and options) |
Yes (via login.csh, startup.csh and logout.csh) |
Yes (command line option) |
Yes | Yes |
| Scsh | POSIX | scsh | 1994 | Yes | ? | ? | BSD-style | Yes | ? | ? | ? | ? | ? | Yes | ? | ? | ? | ? | Yes |
| ksh (ksh93t+) | POSIX | ksh | 1983[13][14] | Yes | AIX, HP-UX | OpenSolaris | Common Public License | Yes | Text-based CLI | No | Yes | Yes (Page Template:Mono/styles.css has no content.printf builtin with Page Template:Mono/styles.css has no content.%(%F)T[15]) |
Yes | Yes (Page Template:Mono/styles.css has no content.fds up to 9)[15] |
Yes (via variables and options) |
Yes (system and user's Page Template:Mono/styles.css has no content.profile and Page Template:Mono/styles.css has no content.kshrc) |
Yes (Unix feature) |
Yes | Yes |
| pdksh | POSIX | ksh, sh | 1989? | Yes | OpenBSD[16] | OpenBSD[16] | Public domain | Yes | Text-based CLI | No | No | Template:Screen reader-only | Yes | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content./etc/profile, Page Template:Mono/styles.css has no content..profile) |
Yes (Unix feature) |
Yes | Yes |
| zsh | POSIX | zsh | 1990 | Yes | Deepin, GoboLinux, Grml, macOS 10.15+, Kali 2020.4+, GhostBSD 26.1-R15.0p2+[17] | Grml, macOS 10.15+ | MIT-style | Yes | Text-based CLI | Yes via additional code[18] |
Yes | Yes (various internal features involving the date, by using the Page Template:Mono/styles.css has no content.%F Page Template:Mono/styles.css has no content.strftime format[19] and the Page Template:Mono/styles.css has no content.-i option for the Page Template:Mono/styles.css has no content.fc builtin[20]) |
Yes | Yes (Page Template:Mono/styles.css has no content.fds up to 9)[21] |
Yes (via variables, options, functions, styles, etc.) |
Yes (system and user's Page Template:Mono/styles.css has no content.zshenv, Page Template:Mono/styles.css has no content.zprofile, Page Template:Mono/styles.css has no content.zshrc, Page Template:Mono/styles.css has no content.zlogin, Page Template:Mono/styles.css has no content.zlogout) |
Yes (Unix feature) |
Yes | Yes |
| ash | POSIX | sh | 1989 | Yes | Minix, BusyBox based systems | NetBSD, Minix, BusyBox based systems | BSD-style | Yes | Text-based CLI | No | Partial (for BusyBox, supported in command-line editing, but not in string handling[22]) |
Template:Screen reader-only | Yes | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (via variables and options) |
Yes (Page Template:Mono/styles.css has no content./etc/profile, Page Template:Mono/styles.css has no content..profile) |
Yes (Unix feature) |
Yes | Yes |
| CCP | CP/M, MP/M | (CCP) | 1976 (1974) | No | CP/M (no login), MP/M | CP/M, MP/M | Freeware (originally proprietary) | Yes (originally closed-source) | Text-based CLI | No | No | No | No | No | No | Yes (automatic via Page Template:Mono/styles.css has no content.$$$.SUB) | Partial (only via external Page Template:Mono/styles.css has no content.SUBMIT command to update Page Template:Mono/styles.css has no content.$$$.SUB) |
No | Yes |
| COMMAND.COM | DOS | COMMAND | 1980 | No (3rd party implementations, not bound to a specific DOS vendor or version, available) |
DOS, Windows 95, 98, SE, ME | DOS, Windows 95, 98, SE, ME | vendor specific, f.e. MS-EULA,[nb 3] or BSD/GPL (free clones) | No (except for OpenDOS, DR-DOS, PTS/DOS and FreeDOS) | Text-based CLI | No | No | No (except for DR-DOS) | Yes (via Page Template:Mono/styles.css has no content.COMMAND con: or Page Template:Mono/styles.css has no content.CTTY con:) | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout) |
Yes (via startup parameters and environment variables, DR-DOS also supports Page Template:Mono/styles.css has no content.DIR /C /R user-default switch command) | Yes (automatic Page Template:Mono/styles.css has no content.\AUTOEXEC.BAT for primary shell, or explicitly via Page Template:Mono/styles.css has no content./P, Page Template:Mono/styles.css has no content./P:filename.bat or Page Template:Mono/styles.css has no content./K startup options) | Yes (via Page Template:Mono/styles.css has no content.CALL command or Page Template:Mono/styles.css has no content./C and Page Template:Mono/styles.css has no content./K startup options) | No | Yes |
| OS/2 CMD.EXE | OS/2, eComStation, ArcaOS | CMD | 1987 | No | OS/2, eComStation, ArcaOS | OS/2, eComStation, ArcaOS | IBM-EULA[nb 4] | No | Text-based CLI | No | No | No | No | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stderr) |
? | Partial (only via Page Template:Mono/styles.css has no content./K startup option) | Yes (via Page Template:Mono/styles.css has no content.CALL command or Page Template:Mono/styles.css has no content./C and Page Template:Mono/styles.css has no content./K startup options) | No | Yes |
| Windows CMD.EXE[nb 5] | Win32 | CMD | 1993 | No | Windows NT, 2000, XP, Server 2003, Vista | Windows NT, 2000, XP, Server 2003, Vista | MS-EULA[nb 6] | No | Text-based CLI | No | Partial (Page Template:Mono/styles.css has no content.CHCP 65001 for UTF-8, but program arguments are still encoded in local codepage) | No | No | Yes | Yes (via registry, startup parameters, and environment variables) | Yes (automatic via registry, or explicitly via Page Template:Mono/styles.css has no content./K startup option) | Yes (via Page Template:Mono/styles.css has no content.CALL command or Page Template:Mono/styles.css has no content./C and Page Template:Mono/styles.css has no content./K startup options) | No | Yes |
| 4DOS, NDOS | DOS, Windows 95, 98, SE, ME | 4DOS, NDOS | 1989 (1986) | No (not bound to a specific OS vendor or version) |
Optional | Optional | MIT License, with restrictions | Yes | Text-based CLI with TUI extensions | Yes (popups, help system, Page Template:Mono/styles.css has no content.%_MOUSE internal variable, Page Template:Mono/styles.css has no content.INKEY /M command) | No | Yes | Yes (via Page Template:Mono/styles.css has no content.CTTY con:, except for Page Template:Mono/styles.css has no content.DRAWBOX, Page Template:Mono/styles.css has no content.DRAWLINE, Page Template:Mono/styles.css has no content.DRAWVLINE, Page Template:Mono/styles.css has no content.LIST, Page Template:Mono/styles.css has no content.SCREEN, Page Template:Mono/styles.css has no content.SCRPUT, Page Template:Mono/styles.css has no content.SELECT, Page Template:Mono/styles.css has no content.VSCRPUT commands and file / directory coloring) | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stderr, Page Template:Mono/styles.css has no content.stdout+stderr) |
Yes (via Page Template:Mono/styles.css has no content.4DOS.INI/Page Template:Mono/styles.css has no content.NDOS.INI file, startup parameters, environment variables, Page Template:Mono/styles.css has no content.SETDOS command) | Yes (automatic Page Template:Mono/styles.css has no content.\AUTOEXEC.BAT for primary shell and Page Template:Mono/styles.css has no content.4START.BTM/Page Template:Mono/styles.css has no content.4START.BAT as well as Page Template:Mono/styles.css has no content.4EXIT.BTM/Page Template:Mono/styles.css has no content.4EXIT.BAT for any shell, or explicitly via Page Template:Mono/styles.css has no content./P, Page Template:Mono/styles.css has no content./P:dir\filename.ext or Page Template:Mono/styles.css has no content./K startup options) | Yes (via Page Template:Mono/styles.css has no content.CALL command or Page Template:Mono/styles.css has no content./C and Page Template:Mono/styles.css has no content./K startup options) | Yes | Yes |
| 4OS2 | OS/2, eComStation, ArcaOS | 4OS2 | 1992 | No (not bound to specific OS/2 versions) |
Optional (but bundled with ArcaOS) | Optional | Freeware | Yes | Text-based CLI | No | No | No | No | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stderr, Page Template:Mono/styles.css has no content.stdout+stderr) |
Yes (via Page Template:Mono/styles.css has no content.4OS2.INI file, startup parameters, environment variables, Page Template:Mono/styles.css has no content.SETDOS command) | Yes (automatic via Page Template:Mono/styles.css has no content.4START.CMD/Page Template:Mono/styles.css has no content.4START.BTM as well as Page Template:Mono/styles.css has no content.4EXIT.CMD/Page Template:Mono/styles.css has no content.4EXIT.BTM files, or explicitly via Page Template:Mono/styles.css has no content./K startup.cmd option) | Yes (via Page Template:Mono/styles.css has no content.CALL command or Page Template:Mono/styles.css has no content./C and Page Template:Mono/styles.css has no content./K startup options) | Yes | ? |
| TCC (formerly 4NT) |
Win32 | TCC | 1993 | No (not bound to specific NT versions) |
optional | optional | Shareware | No | Text-based CLI (Take Command: GUI) | Yes (console mouse, popups, help system, Page Template:Mono/styles.css has no content.%_XMOUSE, Page Template:Mono/styles.css has no content.%_YMOUSE internal variables, Page Template:Mono/styles.css has no content.INKEY /M command) |
Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.stdin, Page Template:Mono/styles.css has no content.stdout, Page Template:Mono/styles.css has no content.stderr, Page Template:Mono/styles.css has no content.stdout+stderr) |
Yes (via registry, Page Template:Mono/styles.css has no content.TCMD.INI/Page Template:Mono/styles.css has no content.4NT.INI file, startup parameters, environment variables, Page Template:Mono/styles.css has no content.SETDOS command) |
Yes (automatic via registry and Page Template:Mono/styles.css has no content.TCSTART/Page Template:Mono/styles.css has no content.4START as well as Page Template:Mono/styles.css has no content.TCEXIT/Page Template:Mono/styles.css has no content.4EXIT, or explicitly via Page Template:Mono/styles.css has no content./K startup option) |
Yes (via Page Template:Mono/styles.css has no content.CALL command or Page Template:Mono/styles.css has no content./C and Page Template:Mono/styles.css has no content./K startup options) |
Yes | No |
| VMS DCL[23] | OpenVMS | Automatically for login/interactive process | 1977[24] | Yes | VMS | VMS | Proprietary, bundled in VMS | by special license only | Text-based CLI | with DECwindows/Motif | Yes | Yes, at least to 1988 standard | Yes | Yes (Page Template:Mono/styles.css has no content.sys$input, Page Template:Mono/styles.css has no content.sys$output assignment) |
Yes (via symbols, logical names, and options) |
Yes (SYS$MANAGER:SYLOGIN.COM and user defined LOGIN.COM) |
Yes | Yes | No |
| PowerShell | .NET, .NET Framework |
PowerShell | 2006 | Yes | Windows 10, 8, Server 2008, 7[nb 7] | Windows 10, 8, Server 2008, 7 | MIT-style | Yes | Graphical CLI | Yes | Yes | Yes | Yes | Yes | Yes (via variables and options) |
Yes (%USERPROFILE%\Documents \WindowsPowerShell\Microsoft.PowerShell_profile.ps1) |
Yes (PowerShell feature) |
Yes | No |
| rc | Plan 9, POSIX | rc | 1989 | Yes | Plan 9, Version 10 Unix | Plan 9, Version 10 Unix | MIT License[25] | Yes | Text-based CLI | ? | Yes | Yes | ? | Yes | Yes (via options) |
Yes (Page Template:Mono/styles.css has no content.$HOME/.rcrc) |
Yes | ? | Yes |
| BeanShell | Java | ? | 2005 | Yes | ? | ? | LGPL | ? | ? | ? | Yes | ? | ? | Yes | ? | ? | ? | ? | No |
| fish | POSIX | fish | 2005[26] | Yes | GhostBSD | ? | GPL | Yes | Text-based CLI | ? | Yes | ? | ? | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (through environment variables and via web interface through Page Template:Mono/styles.css has no content.fish_config) |
Yes (Page Template:Mono/styles.css has no content./etc/fish/config.fish and Page Template:Mono/styles.css has no content.~/.config/fish/config.fish) |
Yes (Unix feature) |
Yes (Page Template:Mono/styles.css has no content.~/.config/fish/fish_history*) |
? |
| Ion | Redox, Linux | ion | 2015[27] | Yes | Redox | Redox | MIT | Yes | Text-based CLI | ? | Yes | Yes | ? | Yes (arbitrary Page Template:Mono/styles.css has no content.fds[<span title="Script error: No such module "decodeEncode".">citation needed]) |
Yes (follows the XDG Base Directory spec) |
Yes (Page Template:Mono/styles.css has no content.~/.config/ion/initrc) |
Yes | Yes (Page Template:Mono/styles.css has no content.~/.local/share/ion/history) |
Partial (not distributed as a standalone executable, but it can be built as one) |
Interactive features
Template:Sticky header Template:Sort-under
| Shell | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth | Template:Verth |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Thompson shell | No | No | No | No | No | No | No | ? | ? | No | No | No | No | No | No | No | No | No | No |
| Bourne shell 1977 version | No | No | No | No | No | No | No | ? | ? | No | No | No | No | No | No | Yes | No | External | No |
| Bourne shell current version | No | Yes[nb 8] | No | No | Yes[nb 8] | No | No | Yes | Yes | No | Yes (CDPATH, pushd, popd, dirs), CDPATH since SVr4 | No | No | No | No | Yes | No | External | No |
| POSIX shell | No | No | No | No | Yes | No | No | Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.CDPATH) |
No | No | No | No | Yes | No | External | No |
| bash (v4.0) | Yes | Yes | Yes | Yes[nb 9] | Yes | No | No | Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.CDPATH, Page Template:Mono/styles.css has no content.pushd, Page Template:Mono/styles.css has no content.popd) |
optional | No | No | No | Yes | Yes | External | No |
| csh | Yes | Yes | No | No | Yes | No | No | Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.cdpath, Page Template:Mono/styles.css has no content.pushd, Page Template:Mono/styles.css has no content.popd) |
optional | No | No | No | Yes | No | External | No |
| tcsh | Yes | Yes | when defined | No | Yes | No | No | Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.cdpath, Page Template:Mono/styles.css has no content.pushd, Page Template:Mono/styles.css has no content.popd) |
optional | Yes | No | No | Yes | No | External | No |
| Hamilton C shell | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.cdpath, Page Template:Mono/styles.css has no content.pushd, Page Template:Mono/styles.css has no content.popd) |
No | No | No | No | Yes | No | External | No |
| Scsh | No | No | No | No | No | No | No | ? | ? | No | No | No | No | No | No | Yes | No | External | No |
| ksh (ksh93t+) | Yes (extendable) |
Yes (extendable) |
No | No | Yes | No | No | Yes | Yes | No | Yes (Page Template:Mono/styles.css has no content.cdpath builtin, Page Template:Mono/styles.css has no content.pushd, Page Template:Mono/styles.css has no content.popd implemented as functions) |
No | No | No | No | Yes | Yes | External | No |
| pdksh | Yes | Yes | No | No | Yes | No | No | Yes | Yes | No | No | No | No | No | No | Yes | Yes | External | No |
| zsh | Yes | Yes | Yes | Yes[28] | Yes | Yes[29] | Yes (via Page Template:Mono/styles.css has no content.predict-on or user-defined[30]) |
Yes | Yes | Third-party extension[31] | Yes | optional | Yes | No | when defined (as ZLE widgets) | Yes | Yes | External | Yes |
| ash | No | No | No | No | Yes | No | No | Yes | Yes | No | No | No | No | No | No | Yes | Yes | External | No |
| CCP | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
| COMMAND.COM | No | No | No | No | No[nb 10][nb 11] | No | No | No | No (only in DR-DOS through %$ON%, %$OFF%, %$HEADER%, %$FOOTER%) | No | No | No | No | No (only single-stepping with COMMAND /Y[32]) | No | No | No (only via external Page Template:Mono/styles.css has no content.CHOICE command, in DR-DOS also via Page Template:Mono/styles.css has no content.SWITCH / Page Template:Mono/styles.css has no content.DRSWITCH internal commands) | No | No |
| OS/2 CMD.EXE |
Yes | Yes | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
| Windows CMD.EXE |
partial | partial | No | No | Yes (Page Template:Mono/styles.css has no content.F8) |
No | No | No | No | No | Yes (Page Template:Mono/styles.css has no content.PUSHD, Page Template:Mono/styles.css has no content.POPD) |
No | No | No | No | Yes (via Page Template:Mono/styles.css has no content.SET /P command) | No | No | No |
| 4DOS | Yes | Yes | Yes | Yes | Yes[nb 12][nb 13] | No | No | Yes | No | No | (via popup, extended directory searches, Page Template:Mono/styles.css has no content.CDPATH, Page Template:Mono/styles.css has no content.PUSHD, Page Template:Mono/styles.css has no content.POPD, Page Template:Mono/styles.css has no content.DIRHISTORY, Page Template:Mono/styles.css has no content.DIRS, Page Template:Mono/styles.css has no content.CDD, Page Template:Mono/styles.css has no content.CD - commands and Page Template:Mono/styles.css has no content.%@DIRSTACK[] function) | Yes | No | Yes | No | Yes (via Page Template:Mono/styles.css has no content.INPUT, Page Template:Mono/styles.css has no content.INKEY and Page Template:Mono/styles.css has no content.ESET commands) | Yes (via Page Template:Mono/styles.css has no content.@SELECT[] function, and indirectly via a combination of Page Template:Mono/styles.css has no content.INKEY, Page Template:Mono/styles.css has no content.INPUT, Page Template:Mono/styles.css has no content.SWITCH commands) | No | Yes |
| 4OS2 | ? | ? | ? | ? | Yes | No | No | Yes | No | No | Yes | Yes | No | ? | No | ? | ? | No | Yes |
| TCC (formerly 4NT) | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | (via popup, extended directory searches, Page Template:Mono/styles.css has no content.CDPATH, Page Template:Mono/styles.css has no content.PUSHD, Page Template:Mono/styles.css has no content.POPD, Page Template:Mono/styles.css has no content.DIRHISTORY, Page Template:Mono/styles.css has no content.DIRS, Page Template:Mono/styles.css has no content.CDD, Page Template:Mono/styles.css has no content.CD - commands and Page Template:Mono/styles.css has no content.%@DIRSTACK[] function) | Yes | No | Yes | No | Yes (via Page Template:Mono/styles.css has no content.INPUT, Page Template:Mono/styles.css has no content.INKEY, Page Template:Mono/styles.css has no content.ESET and Page Template:Mono/styles.css has no content.SET /P commands) | Yes (via Page Template:Mono/styles.css has no content.@SELECT[] function, and indirectly via a combination of Page Template:Mono/styles.css has no content.INKEY, Page Template:Mono/styles.css has no content.INPUT, Page Template:Mono/styles.css has no content.SWITCH commands)[nb 14] | No | Yes |
| PowerShell | Yes | Yes | Yes | Yes | Yes (Page Template:Mono/styles.css has no content.F8) |
Yes | Yes; via PSReadLine[33] module (bundled in v5.0[34]) or in ISE[35] | Third-party extension[36] | Yes[37] | Yes; via PSReadLine[33] module (bundled in v5.0) or in ISE[35] | Yes (multiple stacks; multiple location types;[38] Page Template:Mono/styles.css has no content.Push-Location, Page Template:Mono/styles.css has no content.Pop-Location) |
Yes, in PSReadLine[33] module | Yes, in ISE[35] | Yes, in ISE[35] | Yes | Yes[39] | Yes[40] | Yes, in ISE[35] | popup window[41] |
| rc | Yes[nb 15] | Yes[nb 15] | No | No | Yes[nb 15] | No | No | No | ? | No | No | No | No | No | No | ? | No | No | No |
| BeanShell | Yes | Yes | No | No | No | No | No | ? | ? | No | No | No | No | No | No | No | No | No | No |
| VMS DCL | Minimum uniqueness scheme | No | No | No | Yes | Yes | No | ? | ? | No | No | No | No | No | No | Yes | No | No | No |
| fish | Yes | Yes | Yes[42] | Yes[42] | Yes | No | Yes | Yes | Yes (built-in helper available[43]) |
Yes | Yes | Yes | Yes | Yes[nb 16] | Yes, using Page Template:Mono/styles.css has no content.abbr command | Yes | (via Page Template:Mono/styles.css has no content.fish_config command[44]) | No | No |
Background execution
Background execution allows a shell to run a command without user interaction in the terminal, freeing the command line for additional work with the shell. POSIX shells and other Unix shells allow background execution by using the & character at the end of command.
Completions
Completion features assist the user in typing commands at the command line, by looking for and suggesting matching words for incomplete ones. Completion is generally requested by pressing the completion key (often the Script error: No such module "key". key).
Command name completion is the completion of the name of a command. In most shells, a command can be a program in the command path (usually $PATH), a builtin command, a function or alias.
Path completion is the completion of the path to a file, relative or absolute.
Wildcard completion is a generalization of path completion, where an expression matches any number of files, using any supported syntax for file matching.
Variable completion is the completion of the name of a variable name (environment variable or shell variable). Bash, zsh, and fish have completion for all variable names. PowerShell has completions for environment variable names, shell variable names and — from within user-defined functions — parameter names.
Command argument completion is the completion of a specific command's arguments. There are two types of arguments, named and positional: Named arguments, often called options, are identified by their name or letter preceding a value, whereas positional arguments consist only of the value. Some shells allow completion of argument names, but few support completing values.
Bash, zsh and fish offer parameter name completion through a definition external to the command, distributed in a separate completion definition file. For command parameter name/value completions, these shells assume path/filename completion if no completion is defined for the command. Completion can be set up to dynamically suggest completions by calling a shell function.[45] The fish shell additionally supports parsing of man pages to extract parameter information that can be used to improve completions/suggestions. In PowerShell, all types of commands (cmdlets, functions, script files) inherently expose data about the names, types and valid value ranges/lists for each argument. This metadata is used by PowerShell to automatically support argument name and value completion for built-in commands/functions, user-defined commands/functions as well as for script files. Individual cmdlets can also define dynamic completion of argument values where the completion values are computed dynamically on the running system.
Command history
Template:Main article Users of a shell may find themselves typing something similar to what they have typed before. Support for command history means that a user can recall a previous command into the command-line editor and edit it before issuing the potentially modified command.
Shells that support completion may also be able to directly complete the command from the command history given a partial/initial part of the previous command.
Most modern shells support command history. Shells which support command history in general also support completion from history rather than just recalling commands from the history. In addition to the plain command text, PowerShell also records execution start- and end time and execution status in the command history.
Mandatory argument prompt
Script error: No such module "labelled list hatnote". Mandatory arguments/parameters are arguments/parameters which must be assigned a value upon invocation of the command, function or script file. A shell that can determine ahead of invocation that there are missing mandatory values, can assist the interactive user by prompting for those values instead of letting the command fail. Having the shell prompt for missing values will allow the author of a script, command or function to mark a parameter as mandatory instead of creating script code to either prompt for the missing values (after determining that it is being run interactively) or fail with a message.
Automatic suggestions
Shells featuring automatic suggestions display optional command-line completions as the user types. The PowerShell and fish shells natively support this feature; pressing the Script error: No such module "key". key inserts the completion.
Implementations of this feature can differ between shells; for example, PowerShell[46] and zsh[47] use an external module to provide completions, and fish derives its completions from the user's command history.[48]
Directory history, stack or similar features
Script error: No such module "labelled list hatnote". Shells may record a history of directories the user has been in and allow for fast switching to any recorded location. This is referred to as a "directory stack". The concept had been realized as early as 1978[49] in the release of the C shell (csh).
Command line interpreters 4DOS and its graphical successor Take Command Console also feature a directory stack.
Implicit directory change
A directory name can be used directly as a command which implicitly changes the current location to the directory.
This must be distinguished from an unrelated load drive feature supported by Concurrent DOS, Multiuser DOS, System Manager and REAL/32, where the drive letter L: will be implicitly updated to point to the load path of a loaded application, thereby allowing applications to refer to files residing in their load directory under a standardized drive letter instead of under an absolute path.[50]
Autocorrection
When a command line does not match a command or arguments directly, spell checking can automatically correct common typing mistakes (such as case sensitivity, missing letters). There are two approaches to this; the shell can either suggest probable corrections upon command invocation, or this can happen earlier as part of a completion or autosuggestion.
The tcsh and zsh shells feature optional spell checking/correction, upon command invocation.
Fish does the autocorrection upon completion and autosuggestion. The feature is therefore not in the way when typing out the whole command and pressing enter, whereas extensive use of the tab and right-arrow keys makes the shell mostly case insensitive.
The PSReadLine[33] PowerShell module (which is shipped with version 5.0) provides the option to specify a CommandValidationHandler ScriptBlock which runs before submitting the command. This allows for custom correcting of commonly mistyped commands, and verification before actually running the command.
Progress indicator
A shell script (or job) can report progress of long running tasks to the interactive user.
Unix/Linux systems may offer other tools support using progress indicators from scripts or as standalone-commands, such as the program "pv".[51] These are not integrated features of the shells, however.
Colored directory listings
JP Software command-line processors provide user-configurable colorization of file and directory names in directory listings based on their file extension and/or attributes through an optionally defined %COLORDIR% environment variable.
For the Unix/Linux shells, this is a feature of the Page Template:Mono/styles.css has no content.ls command and the terminal.
Text highlighting
The command line processors in DOS Plus, Multiuser DOS, REAL/32 and in all versions of DR-DOS support a number of optional environment variables to define escape sequences allowing to control text highlighting, reversion or colorization for display or print purposes in commands like TYPE. All mentioned command line processors support %$ON% and %$OFF%. If defined, these sequences will be emitted before and after filenames. A typical sequence for %$ON% would be \033[1m in conjunction with ANSI.SYS, \033p for an ASCII terminal or \016 for an IBM or ESC/P printer. Likewise, typical sequences for %$OFF% would be \033[0m, \033q, \024, respectively. The variables %$HEADER% and %$FOOTER% are only supported by COMMAND.COM in DR-DOS 7.02 and higher to define sequences emitted before and after text blocks in order to control text highlighting, pagination or other formatting options.
For the Unix/Linux shells, this is a feature of the terminal.
Syntax highlighting
Template:Main article A defining feature of the fish shell is built-in syntax highlighting, As the user types, text is colored to represent whether the input is a valid command or not (the executable exists and the user has permissions to run it), and valid file paths are underlined.[52]
An independent project offers syntax highlighting as an add-on to the Z Shell (zsh).[53] This is not part of the shell, however.
PowerShell provides customizable syntax highlighting on the command line through the PSReadLine[33] module. This module can be used with PowerShell v3.0+, and is bundled with v5.0 onwards. It is loaded by default in the command line host "powershell.exe" since v5.0.[54]
Take Command Console (TCC) offers syntax highlighting in the integrated environment.
Context sensitive help
4DOS, 4OS2, 4NT / Take Command Console and PowerShell (in PowerShell ISE) looks up context-sensitive help information when Script error: No such module "key". is pressed.
Zsh provides various forms of configurable context-sensitive help as part of its Page Template:Mono/styles.css has no content.run-help widget, Page Template:Mono/styles.css has no content._complete_help command, or in the completion of options for some commands.
The fish shell provides brief descriptions of a command's flags during tab completion.
Programming features
| Shell | Functions | Exception handling | Search & replace on variable substitutions |
Template:Verth | Template:Verth | Math function library | Linear arrays or lists | Template:Verth | Template:Verth | Template:Verth | Pseudorandom number generation | Bytecode |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Bourne shell 1977 version | No | Yes (via Page Template:Mono/styles.css has no content.trap) | No | No | No | No | No | No | No | Yes | No | No |
| Bourne shell current version | Yes since SVR2 | Yes (via Page Template:Mono/styles.css has no content.trap) | No | Yes[nb 8] | No | No | No | No | No | Yes | No | No |
| POSIX shell | Yes | Yes (via Page Template:Mono/styles.css has no content.trap) | No | Yes | No | No | No | No | No | Yes | No | No |
| bash (v4.0) | Yes | Yes (via Page Template:Mono/styles.css has no content.trap) | Yes (via Page Template:Mono/styles.css has no content.${//} syntax) |
Yes | No | No | Yes | Yes | No | Yes | Yes (Page Template:Mono/styles.css has no content.$RANDOM) |
No |
| csh | No | No | Yes (via Page Template:Mono/styles.css has no content.$var:s/// syntax) |
Yes | No | No | Yes | No | No | Yes | No | No |
| tcsh | No | No | Yes (via Page Template:Mono/styles.css has no content.$var:s/// syntax) |
Yes | No | No | Yes | No | No | Yes | No | No |
| Hamilton C shell | Yes | No | Yes (via Page Template:Mono/styles.css has no content.$var:s/// syntax) |
Yes | Yes | Yes | Yes | No | No | Yes | Yes (random utility) | No |
| Scsh | Yes | ? | Yes (via string functions and regular expressions) |
? | ? | ? | Yes | ? | Yes | Yes | Yes (random-integer, random-real) |
Yes (compiler is Scheme48 virtual machine, via Page Template:Mono/styles.css has no content.scshvm) |
| ksh (ksh93t+) | Yes | Yes (via Page Template:Mono/styles.css has no content.trap) | Yes (via Page Template:Mono/styles.css has no content.${//} syntax and builtin commands) |
Yes | Yes | Yes | Yes | Yes | No | Yes | Yes (Page Template:Mono/styles.css has no content.$RANDOM) |
Yes (compiler is called Page Template:Mono/styles.css has no content.shcomp) |
| pdksh | Yes | Yes (via Page Template:Mono/styles.css has no content.trap) | No | Yes | No | No | Yes | No | No | Yes | Yes (Page Template:Mono/styles.css has no content.$RANDOM) |
No |
| zsh | Yes | Yes | Yes (via Page Template:Mono/styles.css has no content.${:s//} and Page Template:Mono/styles.css has no content.${//} syntax) |
Yes | Yes | Yes (Page Template:Mono/styles.css has no content.zsh/mathfunc module) |
Yes | Yes | No | Yes | Yes (Page Template:Mono/styles.css has no content.$RANDOM) |
Yes (built-in Page Template:Mono/styles.css has no content.zcompile command) |
| ash | Yes | Yes (via Page Template:Mono/styles.css has no content.trap) | No | Yes (since 1992)[55] |
No | No | No | No | No | Yes | No | No |
| CCP | No | ? | No | No | ? | ? | No | No | No | No | No | No |
| COMMAND.COM | No | Partial (only Auto-fail (via Page Template:Mono/styles.css has no content.COMMAND /F (or Page Template:Mono/styles.css has no content./N in some versions of DR-DOS)) | No | No | No | No | No | No | No | No | No | No |
| OS/2 CMD.EXE | No | No | No | ? | No | No | ? | No | No | No | No | No |
| Windows CMD.EXE | Yes (via Page Template:Mono/styles.css has no content.CALL :label) |
No | Yes (via Page Template:Mono/styles.css has no content.SET %varname:expression syntax) |
Yes (via Page Template:Mono/styles.css has no content.SET /A)[56] |
No | No | Yes (via Page Template:Mono/styles.css has no content.SET[57]) |
No | No | No | Yes (Page Template:Mono/styles.css has no content.%random%) |
No |
| 4DOS | Yes | Yes (via Page Template:Mono/styles.css has no content.ON command, optional Auto-fail via Page Template:Mono/styles.css has no content.4DOS /F) |
Yes (via Page Template:Mono/styles.css has no content.%@Replace[...] function) |
Yes (via Page Template:Mono/styles.css has no content.SET /A) |
? | ? | Yes (via ranges, include lists, Page Template:Mono/styles.css has no content.@file lists and Page Template:Mono/styles.css has no content.FOR command) |
No | No | Yes | Yes (Page Template:Mono/styles.css has no content.%@Random[...] function) |
Yes (via Page Template:Mono/styles.css has no content.BATCOMP command) |
| 4OS2 | ? | ? | ? | ? | ? | ? | ? | ? | No | Yes | Yes (Page Template:Mono/styles.css has no content.%@Random[...] function) | ? |
| TCC (formerly 4NT) | Yes | Yes (via Page Template:Mono/styles.css has no content.ON and various Page Template:Mono/styles.css has no content....MONITOR commands) |
Yes (via Page Template:Mono/styles.css has no content.%@Replace[...] function) |
Yes (via Page Template:Mono/styles.css has no content.SET /A) |
? | ? | Yes (via ranges, include lists, Page Template:Mono/styles.css has no content.@file lists and Page Template:Mono/styles.css has no content.FOR command) |
? | No | Yes | Yes (Page Template:Mono/styles.css has no content.%@Random[...] function) | Yes (via Page Template:Mono/styles.css has no content.BATCOMP command) |
| PowerShell | Yes | Yes (Try-Catch-Finally) | Yes (Page Template:Mono/styles.css has no content.-replace operator) |
Yes | Yes | [Math] class[58] | Yes | Yes | Yes[59] | Yes | Yes | Yes, automatic |
| rc | Yes | Yes | No | Yes | ? | ? | Yes | ? | No | Yes | No | No |
| BeanShell | Yes | Yes | ? | Yes | ? | ? | Yes | Yes | No | Yes | Yes | Yes |
| VMS DCL | Yes | Yes | No | Yes | No | yes, for compiled programs | Yes | No | No | No | No | No |
| fish | Yes | Yes (via Page Template:Mono/styles.css has no content.trap) | Yes, via Page Template:Mono/styles.css has no content.string builtin command[60] | Yes | Yes | Yes | Yes | No | No | Yes | Yes (Page Template:Mono/styles.css has no content.random) |
No |
String processing and filename matching
| Shell | String processing | Alternation (Brace expansion) | Pattern matching (regular expressions built-in) | Pattern matching (filename globbing) | Globbing qualifiers (filename generation based on file attributes) | Recursive globbing (generating files from any level of subdirectories) |
|---|---|---|---|---|---|---|
| Bourne shell 1977 version | ? | No | No | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...]) |
No | No |
| Bourne shell recent version | Partial (prefix and suffix stripping in variable expansion) | No | No | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...]) |
No | No |
| POSIX shell | Partial (prefix and suffix stripping in variable expansion) | No | No | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...]) |
No | No |
| bash (v4.0) | Partial (prefix and suffix stripping in variable expansion) | Yes | Yes | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...], Page Template:Mono/styles.css has no content.{...}) |
No | Yes (Page Template:Mono/styles.css has no content.**/...) |
| csh | Yes (:s and other editing operators) |
Yes | No | Yes | No | No |
| tcsh | Yes (:s and other editing operators) |
Yes | Yes | Yes | No | No |
| Hamilton C shell | Yes (:s and other editing operators + substr, strlen, strindex, printf, reverse, upper, lower, concat and other builtin functions) |
Yes | No | Yes | No | Yes (via indefinite directory Page Template:Mono/styles.css has no content."..." wildcard[61]) |
| Scsh | ? | ? | Yes | Yes | No | No |
| ksh (ksh93t+) | Partial (prefix, suffix stripping and string replacement in variable expansion) | Yes[62] | Yes | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...]) |
No | Yes (with Page Template:Mono/styles.css has no content.set -G, no following of symlinks) |
| pdksh | ? | Yes[62] | No | Yes | No | No |
| zsh | Yes (through variable processing: e.g. substring extraction, various transformations via parameter expansion) | Yes | Yes | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...], extended globbing[63]) |
Yes | Yes (Page Template:Mono/styles.css has no content.**/... or Page Template:Mono/styles.css has no content.***/... to follow symlinks) |
| ash | ? | ? | No | Yes | No | No |
| CCP | No | No | No | No | No | No |
| COMMAND.COM | No | No | No | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?) |
No | No |
| OS/2 CMD.EXE | No | No | No | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?) |
Partial (only in Page Template:Mono/styles.css has no content.DIR /A:... command) | No |
| Windows CMD.EXE | Partial (only through Page Template:Mono/styles.css has no content.FOR /F and Page Template:Mono/styles.css has no content.SET /A) | No | No[nb 17] | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?) |
Partial (only in Page Template:Mono/styles.css has no content.DIR /A:... command) | Yes (via Page Template:Mono/styles.css has no content.FOR /R command, or, where available, indirectly via Page Template:Mono/styles.css has no content./S subdir option) |
| 4DOS | Yes (through variable functions Page Template:Mono/styles.css has no content.%@...[], extended environment variable processing, various string commands and Page Template:Mono/styles.css has no content.FOR /F and Page Template:Mono/styles.css has no content.SET /A) | No | No | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...], extended wildcards, Page Template:Mono/styles.css has no content.SELECT popup command) |
Yes (via Page Template:Mono/styles.css has no content./A:... attribute and Page Template:Mono/styles.css has no content./I"..." description options and Page Template:Mono/styles.css has no content./[S...] size, Page Template:Mono/styles.css has no content./[T...] time, Page Template:Mono/styles.css has no content./[D...] date, and Page Template:Mono/styles.css has no content./[!...] file exclusion ranges) | Yes (via Page Template:Mono/styles.css has no content.FOR /R command, or indirectly via Page Template:Mono/styles.css has no content.GLOBAL command or, where available, Page Template:Mono/styles.css has no content./S subdir option) |
| 4OS2 | ? | No | No | ? | ? | ? |
| TCC (formerly 4NT) | Yes (through variable functions Page Template:Mono/styles.css has no content.%@...[], extended environment variable processing, various string commands and Page Template:Mono/styles.css has no content.FOR /F and Page Template:Mono/styles.css has no content.SET /A) | No | Yes | Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...], extended wildcards, Page Template:Mono/styles.css has no content.SELECT popup command) |
Yes (via Page Template:Mono/styles.css has no content./A:... attribute and Page Template:Mono/styles.css has no content./I"..." description options and Page Template:Mono/styles.css has no content./[S...] size, Page Template:Mono/styles.css has no content./[T...] time, Page Template:Mono/styles.css has no content./[D...] date, Page Template:Mono/styles.css has no content./[O...] owner, and Page Template:Mono/styles.css has no content./[!...] file exclusion ranges) | Yes (via Page Template:Mono/styles.css has no content.FOR /R command, or indirectly via Page Template:Mono/styles.css has no content.GLOBAL command or, where available, Page Template:Mono/styles.css has no content./S subdir option) |
| PowerShell | Yes (Concat/Substring/Insert/Remove/Replace, ToLower/ToUpper, Trim/TrimStart/TrimEnd, Compare, Contains/StartsWith/EndWith, Format, IndexOf/LastIndexOf, Pad/PadLeft/PadRight, Split/Join, regular expression functions and other .NET string functions) |
Range operator for numbers[64] | Yes (full regex support)[nb 18] |
Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.[...]) |
? | ? |
| rc | ? | ? | Yes (~ operator) |
Yes | No | No |
| BeanShell | ? | ? | Yes | ? | ? | ? |
| VMS DCL | Yes | No | No | Yes | No | Yes (via Page Template:Mono/styles.css has no content.[SUBDIR...]) |
| fish | Yes (builtin string function) |
Yes | Yes (via builtin Page Template:Mono/styles.css has no content.string match and Page Template:Mono/styles.css has no content.string replace functions) |
Yes (Page Template:Mono/styles.css has no content.*, Page Template:Mono/styles.css has no content.?, Page Template:Mono/styles.css has no content.{...}) |
No | Yes (Page Template:Mono/styles.css has no content.**/...) |
Inter-process communication
| Shell | Pipes | Command substitution | Process substitution | Subshells | TCP/UDP connections as streams | Keystroke stacking |
|---|---|---|---|---|---|---|
| Bourne shell | bytes concurrent | Yes | No | Yes | No | N/A[nb 19] |
| POSIX shell | bytes concurrent | Yes | No | Yes | No | N/A[nb 19] |
| bash (v4.0) | bytes concurrent | Yes | Yes (if system supports Page Template:Mono/styles.css has no content./dev/fd/⟨n⟩ or named pipes) |
Yes | Yes (client only) |
N/A[nb 19] |
| csh | bytes concurrent | Yes | No | Yes | No | N/A[nb 19] |
| tcsh | bytes concurrent | Yes | No | Yes | No | N/A[nb 19] |
| Hamilton C shell | bytes concurrent | Yes | No | Yes | No | ? |
| Scsh | text | ? | ? | ? | Yes | N/A[nb 19] |
| ksh (ksh93t+) | bytes (may contain serialized objects if Page Template:Mono/styles.css has no content.print -C is used) concurrent | Yes (Page Template:Mono/styles.css has no content.$(...) and Page Template:Mono/styles.css has no content.${<space>...;}) |
Yes (if system supports Page Template:Mono/styles.css has no content./dev/fd/⟨n⟩) |
Yes | Yes (and SCTP support, client only) |
N/A[nb 19] |
| pdksh | bytes concurrent | Yes | No | Yes | No | N/A[nb 19] |
| zsh | bytes concurrent | Yes | Yes | Yes | Yes (client and server, but only TCP) |
N/A[nb 19] |
| ash | bytes concurrent | Yes | No | Yes | No | N/A[nb 19] |
| CCP | No | No | No | No | No | No |
| COMMAND.COM | text sequential temporary files | No | No | Partial (only under DR-DOS multitasker via Page Template:Mono/styles.css has no content.COMMAND.COM /T) | No | No |
| OS/2 CMD.EXE | text concurrent | No | No | ? | No | No |
| Windows CMD.EXE | text concurrent | Yes (via Page Template:Mono/styles.css has no content.FOR /F command) |
No | Yes (Backtick: Page Template:Mono/styles.css has no content.` in Page Template:Mono/styles.css has no content.FOR /F usebackq) |
No | No |
| 4DOS | text sequential temporary files | Yes (via Page Template:Mono/styles.css has no content.FOR /F command) |
? | Partial (via Page Template:Mono/styles.css has no content.%@EXECSTR[] and Page Template:Mono/styles.css has no content.%@EXEC[], or via Page Template:Mono/styles.css has no content.SET /M, Page Template:Mono/styles.css has no content.ESET /M and Page Template:Mono/styles.css has no content.UNSET /M and Page Template:Mono/styles.css has no content.%@MASTER[...]) | No | Yes (via Page Template:Mono/styles.css has no content.KEYSTACK and Page Template:Mono/styles.css has no content.KSTACK)[65] |
| 4OS2 | text concurrent | ? | ? | ? | No | Yes (via Page Template:Mono/styles.css has no content.KEYSTACK) |
| TCC (formerly 4NT) | text concurrent | Yes (via Page Template:Mono/styles.css has no content.FOR /F command) |
? | Partial (via Page Template:Mono/styles.css has no content.%@EXECSTR[] and Page Template:Mono/styles.css has no content.%@EXEC[]) | Yes (via Page Template:Mono/styles.css has no content.FTP, Page Template:Mono/styles.css has no content.TFTP, Page Template:Mono/styles.css has no content.FTPS, Page Template:Mono/styles.css has no content.SFTP, Page Template:Mono/styles.css has no content.HTTP, Page Template:Mono/styles.css has no content.HTTPS and Page Template:Mono/styles.css has no content.IFTP, client only) | Yes (via Page Template:Mono/styles.css has no content.KEYSTACK) |
| PowerShell | objects concurrent | Yes | No | Yes | Yes | ? |
| rc | text concurrent | Yes | Yes (via: Page Template:Mono/styles.css has no content.<{cmd} if system supports Page Template:Mono/styles.css has no content./dev/fd/⟨n⟩) |
Yes | No | ? |
| BeanShell | not supported | ? | ? | ? | Yes | ? |
| VMS DCL | text (via Page Template:Mono/styles.css has no content.PIPE command) | Yes | No | Yes (spawn) |
Yes (server TCP only) |
No |
| fish | bytes concurrent | Yes (Page Template:Mono/styles.css has no content....) | No (broken)[66] | No | No | N/A[nb 19] |
Keystroke stacking
In anticipation of what a given running application may accept as keyboard input, the user of the shell instructs the shell to generate a sequence of simulated keystrokes, which the application will interpret as a keyboard input from an interactive user. By sending keystroke sequences the user may be able to direct the application to perform actions that would be impossible to achieve through input redirection or would otherwise require an interactive user. For example, if an application acts on keystrokes, which cannot be redirected, distinguishes between normal and extended keys, flushes the queue before accepting new input on startup or under certain conditions, or because it does not read through standard input at all. Keystroke stacking typically also provides means to control the timing of simulated keys being sent or to delay new keys until the queue was flushed etc. It also allows to simulate keys which are not present on a keyboard (because the corresponding keys do not physically exist or because a different keyboard layout is being used) and therefore would be impossible to type by a user.
Security features
Page Module:Message box/ambox.css has no content.
This section may contain information not important or relevant to the article's subject. (July 2014) |
| Shell | Secure (password) prompt | File/directory passwords | Execute permission | Restricted shell subset | Safe data subset |
|---|---|---|---|---|---|
| Bourne shell | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | Yes | No |
| POSIX shell | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | No | No |
| bash (v4.0) | read -s
|
? | N/A[nb 21] | Yes[67] | No |
| csh | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | Yes | No |
| tcsh | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | Yes | No |
| Hamilton C shell | No | No | No | No | No |
| Scsh | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | No | No |
| ksh (ksh93t+) | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | Yes | No |
| pdksh | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | Yes | No |
| zsh | read -s
|
? | N/A[nb 21][nb 22] | Yes | No |
| ash | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | No | No |
| CCP | No | No | No | No | No |
| COMMAND.COM | Partial (only under DR-DOS, prompts for password if file/directory is protected) | Partial (only under DR-DOS via \dirname;dirpwd\filename;filepwd syntax)[nb 23]
|
Partial (only under DR-DOS, if files are password-protected for read and/or execute permission)[nb 24] | No | No |
| OS/2 CMD.EXE | No | No | No | No | No |
| Windows CMD.EXE | No | No | No | No | No |
| 4DOS | Yes (via INPUT /P or INKEY /P)[nb 25]
|
Partial (only under DR-DOS via \dirname;;dirpwd\filename;;filepwd syntax)[nb 23]
|
Partial (only under DR-DOS, if files are password-protected for read and/or execute permission)[nb 24] | No | No |
| 4OS2 | ? | No | No | No | No |
| TCC (formerly 4NT) | Yes (via INPUT /P, INKEY /P or QUERYBOX /P)[nb 25]
|
No | No | No | No |
| PowerShell | Yes[nb 26] | No | No[nb 27] | Yes[nb 28] | Yes[68] |
| rc | via Page Template:Mono/styles.css has no content.stty[nb 20] | ? | N/A[nb 21] | No | No |
| BeanShell | ? | ? | ? | ? | ? |
| VMS DCL | Yes | No | Yes | Yes | No |
| fish | read -s
|
? | N/A[nb 21][nb 22] | No | ? |
Secure prompt
Some shell scripts need to query the user for sensitive information such as passwords, private digital keys, PIN codes or other confidential information. Sensitive input should not be echoed back to the screen/input device where it could be gleaned by unauthorized persons. Plaintext memory representation of sensitive information should also be avoided as it could allow the information to be compromised, e.g., through swap files, core dumps etc.[69]
The shells bash, zsh and PowerShell offer this as a specific feature.[70][71] Shells which do not offer this as a specific feature may still be able to turn off echoing through some other means. Shells executing on a Unix/Linux operating system can use the Page Template:Mono/styles.css has no content.stty external command to switch off/on echoing of input characters.[72] In addition to not echoing back the characters, PowerShell's -AsSecureString option also encrypts the input character-by-character during the input process, ensuring that the string is never represented unencrypted in memory where it could be compromised through memory dumps, scanning, transcription etc.
Execute permission
Some operating systems define an execute permission which can be granted to users/groups for a file when the file system itself supports it.
On Unix systems, the execute permission controls access to invoking the file as a program, and applies both to executables and scripts.
As the permission is enforced in the program loader, no obligation is needed from the invoking program, nor the invoked program, in enforcing the execute permission – this also goes for shells and other interpreter programs.
The behaviour is mandated by the POSIX C library that is used for interfacing with the kernel. POSIX specifies that the exec family of functions shall fail with EACCESS (permission denied) if the file denies execution permission (see Template:Man).
The execute permission only applies when the script is run directly. If a script is invoked as an argument to the interpreting shell, it will be executed regardless of whether the user holds the execute permission for that script.
Although Windows also specifies an execute permission, none of the Windows-specific shells block script execution if the permission has not been granted.
Restricted shell subset
Several shells can be started or be configured to start in a mode where only a limited set of commands and actions is available to the user. While not a security boundary (the command accessing a resource is blocked rather than the resource) this is nevertheless typically used to restrict users' actions before logging in.
A restricted mode was evaluated for the POSIX specification for shells, but not included.[73] However, most of the Linux/Unix shells support such a mode where several of the built-in commands are disabled and only external commands from a certain directory can be invoked.
PowerShell supports restricted modes through session configuration files or session configurations. A session configuration file can define visible (available) cmdlets, aliases, functions, path providers and more.[74]
Safe data subset
Scripts that invoke other scripts can be a security risk as they can potentially execute foreign code in the context of the user who launched the initial script. Scripts will usually be designed to exclusively include scripts from known safe locations; but in some instances, e.g. when offering the user a way to configure the environment or loading localized messages, the script may need to include other scripts/files.[75] One way to address this risk is for the shell to offer a safe subset of commands which can be executed by an included script.
Notes
Page Template:Reflist/styles.css has no content.
- ^ Since mid 1990s.
- ^ if compiled with -DACCT.
- ^ MS-DOS and Windows component – covered by a valid license for MS-DOS or Microsoft Windows.
- ^ OS/2 component – covered by a valid license for OS/2.
- ^ Command extensions enabled, or "CMD /X".
- ^ Windows component – covered by a valid license for Microsoft Windows.
- ^ Microsoft PowerShell is installed by default on Windows 7 and later. It is an optional download for users of Windows Vista or Windows XP.
- ^ a b c current versions from Jörg Schilling.
- ^ Alt-Shift-8 or Alt-* will expand to the full matching list of filenames.
- ^ Available through the Page Template:Mono/styles.css has no content.DOSKEY add-on.
- ^ Available in DR-DOS through Page Template:Mono/styles.css has no content.HISTORY.
- ^ Alternatively available through the Page Template:Mono/styles.css has no content.DOSKEY add-on as well.
- ^ Alternatively available in DR-DOS through Page Template:Mono/styles.css has no content.HISTORY as well.
- ^ TCC has special prompt functions for Yes, No, Cancel, Close, Retry.
- ^ a b c Handled by rio, GNU readline, editline or vrl.
- ^ The fish shell is an interactive character based input/output surface.
- ^ Not available as a shell built-in. External Page Template:Mono/styles.css has no content.FINDSTR /R command is available in most Windows releases.
- ^ PowerShell leverages the full .NET regular expression engine which features named captures, zero-width lookahead/-behind, greedy/non-greedy, character classes, level counting etc.
- ^ a b c d e f g h i j k xautomation and xdotool can be used to generate keystrokes under X Window System; or a program can be run in a pseudoterminal to be able to control it (as with the Page Template:Mono/styles.css has no content.expect tool).
- ^ a b c d e f g h i The shell can use the Page Template:Mono/styles.css has no content.stty utility to suppress echoing of typed characters to the screen. This requires multiple steps: 1. reading the current echo state, 2. switching echo off, 3. reading the input, 4. switching echo state back to the original state.
- ^ a b c d e f g h i j k l The execute permission is enforced by a separate program, the program loader, by refusing to invoke the interpreter (possibly a shell) specified by the script's hashbang. The interpreter does not enforce the execute permission if invoked directly as the program loader would, with the file as an argument; this only requires read permission, as does piping the file as input to the interpreter, in which case the interpreter cannot see the execute permission.
- ^ a b The zsh and fish shells also honor the execute permission for command completion.
- ^ a b Under DR-DOS the password separator for file and directory passwords is a semicolon. This is also supported under 4DOS for as long as the command does not support include lists. Under 4DOS, the password separator must be doubled for all commands supporting include lists in order to distinguish passwords from include lists. Commands not supporting include lists accept both forms. DR-DOS 7.02 and higher optionally accept a doubled semicolon as well, so that doubled semicolons work under both COMMAND.COM and 4DOS regardless of the command executed.
- ^ a b DR-DOS supports file passwords for read/write/delete and optionally execute permissions. Files are not protected by default, but the system can be set up so that f.e. batch scripts require a password to read.
- ^ a b
INPUT /PandINKEY /Pechoes back asterisks for each typed character. - ^
Read-Host -AsSecureStringreads a string of characters from the input device into an encrypted string, one character at a time thus ensuring that there is no memory image of the clear text which could be gleaned from scanning memory, or from crash dumps, memory dumps, paging files, log files or similar. - ^ PowerShell script files (Page Template:Mono/styles.css has no content..ps1 files) are by default associated with the Notepad editor, not with the PowerShell execution engine. Invoking a Page Template:Mono/styles.css has no content..ps1 file will launch Notepad rather than executing the script.
- ^ Startup scripts per computer/user can import modules and expose a subset the commands/functions available in the modules.
References
Page Template:Reflist/styles.css has no content.
- ^ A platform independent version based on the historical UNIX V7 original source code is available from Geoff Collyer
- ^ The historic UNIX V7 version is available under a BSD-style license Script error: No such module "webarchive". through The Unix Heritage Society and others.
- ^ A platform independent version based on the SVr4/Solaris source code is available from Jörg Schilling
- ^ Page Module:Citation/CS1/styles.css has no content.Ferrell, John, "Chapter 2. Default Shell", FreeBSD Quickstart Guide for Linux Users, The FreeBSD Documentation Project, retrieved 2015-07-24
- ^ Page Module:Citation/CS1/styles.css has no content."SchilliX-ON / SchilliX-ON Mercurial / [b1d9a2] /usr/src/cmd/sh". Sourceforge.net. Retrieved 2015-07-02.
- ^ Page Module:Citation/CS1/styles.css has no content.IEEE and The Open Group (2008). IEEE 1003.1 Standard for Information Technology – Portable Operating System Interface (POSIX): Shell and Utilities, Issue 7.
- ^ As part of IEEE Std.1003.2-1992 (POSIX.2); integrated into IEEE Std.1003.1 with the 2001 revision.
- ^ Page Module:Citation/CS1/styles.css has no content.Fox, Brian (1989-06-07). Tower Jr., Leonard H. (ed.). "Bash is in beta release!". Newsgroup: gnu.announce. Usenet: 8906080235.AA01983@wheat-chex.ai.mit.edu. Retrieved 2010-10-28.
- ^ Page Module:Citation/CS1/styles.css has no content.Cooper, Mendel, "Chapter 37.3.2. Bash, version 4.2", Advanced Bash-Scripting Guide, The Linux Documentation Project, retrieved 2015-04-30, "Bash now supports the \u and \U Unicode escape."
- ^ Page Module:Citation/CS1/styles.css has no content.Greer, Ken (1983-10-03). "C shell with command and filename recognition/completion". Newsgroup: net.sources. Retrieved 2010-12-29.
- ^ Page Module:Citation/CS1/styles.css has no content."FreeBSD Quickstart Guide for Linux® Users". FreeBSD Documentation Portal. Retrieved 2024-02-04.
- ^ Page Module:Citation/CS1/styles.css has no content.Sussman, Ann (1988-12-26). "Hamilton C Shell Speeds Development Of OS/2 Applications" (PDF). PC Week (1988-12-26 - 1989-01-02): 37. Retrieved 2010-11-22.
- ^ Page Module:Citation/CS1/styles.css has no content.Gomes, Ron (1983-06-09). "Toronto USENIX Conference Schedule (tentative)". Newsgroup: net.usenix. Retrieved 2010-12-29.
- ^ Page Module:Citation/CS1/styles.css has no content.Harris, Guy (1983-10-10). "csh question". Newsgroup: net.flame. Retrieved 2010-12-29.
- ^ a b ksh93(1) man page
- ^ a b Default shell in OpenBSD is ksh (pdksh).
- ^ Page Module:Citation/CS1/styles.css has no content."GhostBSD 26.1-R15.0p2 Is Now Available". GhostBSD News. Retrieved 2026-04-19.
- ^ The zsh command line editor is fully configurable and can allow mouse support in various ways such as with Stéphane Chazelas's Page Template:Mono/styles.css has no content.mouse.zsh.
- ^ zsh(1) man page and subpages
- ^ zshbuiltins(1) man page
- ^ Page Module:Citation/CS1/styles.css has no content.Lefevre, Vincent (2015-02-11). "multi-digit file descriptors". zsh-users (Mailing list). Retrieved 2021-12-23.
- ^ Page Module:Citation/CS1/styles.css has no content."#782228 - busybox sh doesn't support multibyte characters in string handling - Debian Bug report logs". Bugs.debian.org. 2015-04-09. Retrieved 2015-07-02.
- ^ Page Module:Citation/CS1/styles.css has no content."HP OpenVMS DCL Dictionary". Archived from the original on 2007-03-25. Retrieved 2009-03-23.
- ^ Page Module:Citation/CS1/styles.css has no content.Kenah, Lawrence J. (1984). VAX/VMS Internals and Data Structures. Digital Press. ISBN 978-3-528-02410-9.
- ^ Page Module:Citation/CS1/styles.css has no content.Larabel, Michael (2021-03-23). "Plan 9 Copyright Transferred To Foundation, MIT Licensed Code Released". Phoronix. Retrieved 2021-03-28.
- ^ Page Module:Citation/CS1/styles.css has no content.Liljencrantz, Axel (2005-05-17). "Fish - The friendly interactive shell". Retrieved 2013-04-08.
- ^ Page Module:Citation/CS1/styles.css has no content.Soller, Jeremy (2015-11-15). "d79c8f511573fb7710abc63b4236a40022914520". Retrieved 2019-08-03.
- ^ Page Module:Citation/CS1/styles.css has no content."[Z Shell] Completion System". Zsh.sourceforge.io. Retrieved 2015-02-24.
- ^ This applies only on reserved words and other syntactic features.
- ^ e.g. via 3rd party such as zsh-autosuggestions
- ^ zsh does not feature syntax highlighting, but a 3rd party project exists which offers this capability as an add-on: zsh-syntax-highlighting
- ^ Page Module:Citation/CS1/styles.css has no content.Paul, Matthias R. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT and BOOT.TXT - A short description of how OpenDOS is booted". Archived from the original on 2003-10-04. Retrieved 2009-03-29. [1]
- ^ a b c d e Page Module:Citation/CS1/styles.css has no content.Shirk, Jason (2018-02-15). "PSReadLine: A bash inspired readline implementation for PowerShell" – via GitHub.
- ^ Page Module:Citation/CS1/styles.css has no content."Windows PowerShell 5.0". Archived from the original on 17 September 2016. Retrieved 8 September 2016.
- ^ a b c d e Page Module:Citation/CS1/styles.css has no content."Windows PowerShell Integrated Scripting Environment (ISE)". Microsoft Technet. Retrieved 2015-09-12.
- ^ Page Module:Citation/CS1/styles.css has no content."Get-ChildItemColor". GitHub. 2022-03-18.
- ^ Page Module:Citation/CS1/styles.css has no content.sdwheeler. "Write-Host (Microsoft.PowerShell.Utility) - PowerShell". docs.microsoft.com. Retrieved 2022-01-18.
- ^ Push-Location (with alias
pushd) and Pop-Location (with aliaspopd) allows multiple location types (directories of file systems, organizational units of Active Directory, nodes of Windows Registry etc) to be pushed onto and popped from location stacks. - ^ The $host.ui.PromptForChoice function allows for a menu-style prompt for choices. The prompt works from background jobs as well as from remote sessions, displaying the menu prompt on the console of the controlling session.
- ^ The Page Template:Mono/styles.css has no content.Write-Progress cmdlet writes a progress bar which can indicate percentage, remaining seconds etc. The progress bar messages work from background jobs or remote sessions in addition to interactive scripts, i.e. the progress bar is displayed on the console of the controlling session, not as part of the regular output.
- ^ The Page Template:Mono/styles.css has no content.Show-Command cmdlet inspects the command definition and opens an interactive windows with a named input field for each parameter/switch
- ^ a b Page Module:Citation/CS1/styles.css has no content."fish: Documentation". Section Tab completion. Retrieved 2016-01-10.
- ^ Page Module:Citation/CS1/styles.css has no content."set_color - set the terminal color — fish-shell 3.1.2 documentation". fishshell.com. Archived from the original on 2020-02-17. Retrieved 2021-02-23.
- ^ Page Module:Citation/CS1/styles.css has no content."abbr - manage fish abbreviations — fish-shell 3.1.2 documentation". fishshell.com. Retrieved 2021-02-23.
- ^ Page Module:Citation/CS1/styles.css has no content."zsh: 20. Completion System". Zsh.sourceforge.io. 2013-03-06. Retrieved 2013-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content.sdwheeler. "What's New in the PowerShell 5.0 ISE - PowerShell". docs.microsoft.com. Retrieved 2021-07-25.
- ^ Page Module:Citation/CS1/styles.css has no content."GitHub - marlonrichert/zsh-autocomplete: 🤖 Real-time type-ahead completion for Zsh. Asynchronous find-as-you-type autocompletion". GitHub. Retrieved 2021-07-25.
- ^ Page Module:Citation/CS1/styles.css has no content."Interactive use — fish-shell 3.3.1 documentation". fishshell.com. Retrieved 2021-07-25.
- ^ Page Module:Citation/CS1/styles.css has no content.Hahn, Harley (2009). Harley Hahn's guide to Unix and Linux. Boston: McGraw-Hill Higher Education. ISBN 978-0-07-313361-4. OCLC 184828059.
- ^ Page Module:Citation/CS1/styles.css has no content.Concurrent DOS 386 - Multiuser/Multitasking Operating System - User Guide (PDF). Digital Research.
- ^ Page Module:Citation/CS1/styles.css has no content."pv(1): monitor progress of data through pipe - Linux man page". Linux.die.net. Retrieved 2015-02-24.
- ^ Page Module:Citation/CS1/styles.css has no content."fish: Tutorial". fishshell.com. Retrieved 2022-10-21.
- ^ Page Module:Citation/CS1/styles.css has no content."zsh-users/zsh-syntax-highlighting: Fish shell like syntax highlighting for Zsh". GitHub. Retrieved 2013-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content.sdwheeler. "PSReadLine Module - PowerShell". learn.microsoft.com. Retrieved 2023-04-26.
- ^ Page Module:Citation/CS1/styles.css has no content."Ash Variants". Archived from the original on 2010-03-10. Retrieved 2014-12-15.
- ^ Page Module:Citation/CS1/styles.css has no content."Set - Environment Variable - Windows CMD". SS64.com. Retrieved 2015-02-24.
- ^ Page Module:Citation/CS1/styles.css has no content."How to loop through array in batch?". Stack Overflow. Retrieved 2015-02-24.
- ^ The .NET System.Math class defines mathematical functions that can be used through the shortcut Page Template:Mono/styles.css has no content.[Math], e.g. Page Template:Mono/styles.css has no content.[Math]::Sin for the sinus function.[2]
- ^ Page Module:Citation/CS1/styles.css has no content."Get closure with GetNewClosure". devblogs.microsoft.com. 2009-03-27. Retrieved 2022-09-12.
- ^ Page Module:Citation/CS1/styles.css has no content."string - manipulate strings — fish-shell 3.1.2 documentation". fishshell.com. Retrieved 2021-02-23.
- ^ Page Module:Citation/CS1/styles.css has no content.Hamilton C shell Language reference: Wildcarding and pattern matching, Hamilton Laboratories, retrieved 2013-10-29,
Page Template:Mono/styles.css has no content.... Indefinite Directory: match any number of directory levels – zero or more – whatever it takes to make the rest of the pattern match.
- ^ a b Page Module:Citation/CS1/styles.css has no content.Seebach, Peter (2008-11-21). Beginning Portable Shell Scripting: From Novice to Professional. Expert's voice in open source. Apress (published 2008). p. 149. ISBN 9781430210436. Retrieved 2014-09-17.
Brace expansion is available in ksh93, pdksh, bash, and zsh.
- ^ Zsh offers a variety of globbing options.
- ^ Page Module:Citation/CS1/styles.css has no content.sdwheeler. "about Operators - PowerShell". docs.microsoft.com. Retrieved 2022-01-18.
- ^ Page Module:Citation/CS1/styles.css has no content.Brothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). 4DOS 8.00 online help.
- ^ Page Module:Citation/CS1/styles.css has no content."find a way to make 'psub --fifo' safe from deadlock · Issue #1040 · fish-shell/fish-shell". GitHub.
- ^ Page Module:Citation/CS1/styles.css has no content."Bash Reference Manual: The Restricted Shell". Gnu.org. 2010-12-28. Retrieved 2013-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content."About Data Sections". Technet.microsoft.com. Retrieved 2015-02-24.
- ^ Page Module:Citation/CS1/styles.css has no content.Provos, Niels. "Encrypting Virtual Memory". Center for Information Technology Integration, University of Michigan. Retrieved 2012-12-20.
- ^ Page Module:Citation/CS1/styles.css has no content."bash - GNU Bourne-Again SHell".
read -s Silent mode. If input is coming from a terminal, characters are not echoed.
- ^ Page Module:Citation/CS1/styles.css has no content."Using the Read-Host Cmdlet".
By adding the -assecurestring parameter you can mask the data entered at the prompt
- ^ Page Module:Citation/CS1/styles.css has no content."Linux / Unix Command: stty". Linux.about.com. Archived from the original on 2015-02-25. Retrieved 2015-02-24.
- ^ Page Module:Citation/CS1/styles.css has no content."man sh - shell, the standard command language interpreter / posix". Pwet.fr. Archived from the original on 2014-12-21. Retrieved 2013-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content."New-PSSessionConfigurationFile". Technet.microsoft.com. Retrieved 2013-08-18.
- ^ Page Module:Citation/CS1/styles.css has no content.Albing, Carl; Vossen, J. P.; Newham, Cameron (2007). Bash cookbook (1st ed.). Sebastopol, California, USA: O'Reilly Media. ISBN 978-0-596-52678-8.
[...] is hardly what one thinks of as a passive list of configured variables. It can run other commands (e.g., cat) and use if statements to vary its choices. It even ends by echoing a message. Be careful when you source something, as it's a wide open door into your script.
External links
- Page Module:Citation/CS1/styles.css has no content.Nasarek, Marcus (May 2007). "Article" (PDF). Comparing Bash with the Windows Vista shell: Shell Games. Linux Magazine. Archived (PDF) from the original on 2014-10-10.
- Page Module:Citation/CS1/styles.css has no content."Shell and Utilities". IEEE Standard for Information Technology 1003.1™-2024 – Portable Operating System Interface POSIX™.1-2024 — The Open Group Base Specifications Issue 8 (2024 ed.). The IEEE and The Open Group. 2024-08-08.
Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found.