Английская Википедия:Comparison of command shells

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Short description Шаблон:Further Шаблон:Multiple issues Шаблон:Use dmy dates

Файл:Bash screenshot.png
Bash, the default shell on many GNU/Linux systems.

A command shell is a command-line interface to interact with and manipulate a computer's operating system.

General characteristics

Shell Usual environment Usually invoked Introduced Platform-independent Default login shell in Default script shell in License Source code availability User interface Mouse support Unicode support ISO 8601 support Console redirection Stream redirection Configurability Startup/shutdown scripts Batch scripts Logging Available as statically linked, independent single file executable
Thompson shell UNIX sh 1971 Шаблон:N/A UNIX UNIX Шаблон:N/A Шаблон:Yes Text-based CLI Шаблон:No Шаблон:No Шаблон:N/A Шаблон:Yes Шаблон:N/A Шаблон:N/A Шаблон:N/A Шаблон:N/A Шаблон:N/A Шаблон:N/A
Bourne shell 1977 version 7th Ed. UNIX sh 1977 Шаблон:Yes 7th Ed. UNIX 7th Ed. UNIX, Шаблон:Proprietary Шаблон:Yes Text-based CLI Шаблон:No Шаблон:No Шаблон:N/A Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes
Bourne shell current version Various UNIX sh 1977 Шаблон:Yes SunOS-5.x, FreeBSD[1] SunOS-5.x Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:Yes[nb 1]Шаблон:Better source needed Шаблон:N/A Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes[nb 2] Шаблон:Yes
POSIX shell[2] POSIX sh 1992[3] Шаблон:N/A Шаблон:N/A POSIX Шаблон:N/A Шаблон:N/A Text-based CLI Шаблон:No Шаблон:Yes Шаблон:N/A Шаблон:Yes Шаблон:Yes Шаблон:Yes Unspecified (Шаблон:Mono given as an example) Шаблон:Yes Шаблон:Yes Шаблон:N/A
bash (v4) POSIX bash, sh 1989[4] Шаблон:Yes GNU, Linux (default for root), macOS 10.3–10.14 GNU, Linux, Haiku, macOS 10.3–10.14 Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:Yes[5]Шаблон:Better source needed Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
csh POSIX csh 1978 Шаблон:Yes SunOS Шаблон:Dunno Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:No Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
tcsh POSIX tcsh, csh 1983[6] Шаблон:Yes FreeBSD (former default for root),[7] formerly Mac OS X Шаблон:Dunno Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:Yes Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
Hamilton C shell Win32, OS/2 csh 1988[8] Шаблон:Yes (OS/2 version no longer maintained) Шаблон:Optional Шаблон:Optional Шаблон:Proprietary Шаблон:No Text-based CLI Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
Scsh POSIX scsh 1994 Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Free Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Yes
ksh (ksh93t+) POSIX ksh 1983[9][10] Шаблон:Yes AIX, HP-UX OpenSolaris Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
pdksh POSIX ksh, sh 1989? Шаблон:Yes OpenBSD[11] OpenBSD[11] Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:No Шаблон:N/A Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
zsh POSIX zsh 1990 Шаблон:Yes Deepin, GoboLinux, Grml, macOS 10.15+, Kali 2020.4+ Grml, macOS 10.15+ Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
ash POSIX sh 1989 Шаблон:Yes Minix, BusyBox based systems NetBSD, Minix, BusyBox based systems Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:No Шаблон:Partial (for BusyBox, supported in command-line editing, but not in string handling[12]) Шаблон:N/A Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
CCP CP/M, MP/M (CCP) 1976 (1974) Шаблон:No CP/M (no login), MP/M CP/M, MP/M Шаблон:Proprietary Шаблон:Yes (originally closed-source) Text-based CLI Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes (automatic via Шаблон:Mono) Шаблон:Partial (only via external Шаблон:Mono command to update Шаблон:Mono) Шаблон: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 Шаблон:Mono or Шаблон:Mono) Шаблон:Yes Шаблон:Yes (via startup parameters and environment variables, DR-DOS also supports Шаблон:Mono user-default switch command) Шаблон:Yes (automatic Шаблон:Mono for primary shell, or explicitly via Шаблон:Mono, Шаблон:Mono or Шаблон:Mono startup options) Шаблон:Yes (via Шаблон:Mono command or Шаблон:Mono and Шаблон:Mono startup options) Шаблон:No Шаблон:Yes
OS/2 CMD.EXE OS/2, eComStation, ArcaOS CMD 1987 Шаблон:No OS/2, eComStation, ArcaOS OS/2, eComStation, ArcaOS Шаблон:Proprietary[nb 4] Шаблон:No Text-based CLI Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Dunno Шаблон:Partial (only via Шаблон:Mono startup option) Шаблон:Yes (via Шаблон:Mono command or Шаблон:Mono and Шаблон:Mono 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 Шаблон:Proprietary[nb 6] Шаблон:No Text-based CLI Шаблон:No Шаблон:Partial (Шаблон:Mono 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 Шаблон:Mono startup option) Шаблон:Yes (via Шаблон:Mono command or Шаблон:Mono and Шаблон:Mono startup options) Шаблон:No Шаблон:Yes
4DOS, NDOS DOS, Windows 95, 98, SE, ME 4DOS, NDOS 1989 (1986) Шаблон:No Шаблон:Optional Шаблон:Optional Шаблон:Free Шаблон:Yes Text-based CLI with TUI extensions Шаблон:Yes (popups, help system, Шаблон:Mono internal variable, Шаблон:Mono command) Шаблон:No Шаблон:Yes Шаблон:Yes (via Шаблон:Mono, except for Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono commands and file / directory coloring) Шаблон:Yes Шаблон:Yes (via Шаблон:Mono/Шаблон:Mono file, startup parameters, environment variables, Шаблон:Mono command) Шаблон:Yes (automatic Шаблон:Mono for primary shell and Шаблон:Mono/Шаблон:Mono as well as Шаблон:Mono/Шаблон:Mono for any shell, or explicitly via Шаблон:Mono, Шаблон:Mono or Шаблон:Mono startup options) Шаблон:Yes (via Шаблон:Mono command or Шаблон:Mono and Шаблон:Mono startup options) Шаблон:Yes Шаблон:Yes
4OS2 OS/2, eComStation, ArcaOS 4OS2 1992 Шаблон:No Шаблон:Optional (but bundled with ArcaOS) Шаблон:Optional Шаблон:Proprietary Шаблон:Yes Text-based CLI Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes (via Шаблон:Mono file, startup parameters, environment variables, Шаблон:Mono command) Шаблон:Yes (automatic via Шаблон:Mono/Шаблон:Mono as well as Шаблон:Mono/Шаблон:Mono files, or explicitly via Шаблон:Mono option) Шаблон:Yes (via Шаблон:Mono command or Шаблон:Mono and Шаблон:Mono startup options) Шаблон:Yes Шаблон:Dunno
TCC (formerly 4NT) Win32 TCC 1993 Шаблон:No optional optional Шаблон:Proprietary Шаблон:No Text-based CLI (Take Command: GUI) Шаблон:Yes (console mouse, popups, help system, Шаблон:Mono, Шаблон:Mono internal variables, Шаблон:Mono command) Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes (via registry, Шаблон:Mono/Шаблон:Mono file, startup parameters, environment variables, Шаблон:Mono command) Шаблон:Yes (automatic via registry and Шаблон:Mono/Шаблон:Mono as well as Шаблон:Mono/Шаблон:Mono, or explicitly via Шаблон:Mono startup option) Шаблон:Yes (via Шаблон:Mono command or Шаблон:Mono and Шаблон:Mono startup options) Шаблон:Yes Шаблон:No
VMS DCL[13] OpenVMS Automatically for login/interactive process 1977? Шаблон:Yes VMS VMS Proprietary, bundled in VMS Шаблон:No Text-based CLI Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No
PowerShell .NET,
.NET Framework
PowerShell 2006 Шаблон:Yes Windows 10, 8, Server 2008, 7[nb 7] Windows 10, 8, Server 2008, 7 Шаблон:Free Шаблон:Yes Graphical CLI Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No
rc Plan 9, POSIX rc 1989 Шаблон:Yes Plan 9, Version 10 Unix Plan 9, Version 10 Unix Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Dunno Шаблон:Yes
BeanShell Java Шаблон:Dunno 2005 Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Free Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:Dunno Шаблон:No
fish POSIX fish 2005[14] Шаблон:Yes GhostBSD Шаблон:Dunno Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:Dunno Шаблон:Yes Шаблон:Dunno Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Dunno
Ion Redox, Linux ion 2015[15] Шаблон:Yes Redox Redox Шаблон:Free Шаблон:Yes Text-based CLI Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Dunno Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Partial (not distributed as a standalone executable, but it can be built as one)
Shell Usual environment Usually invoked Introduced Platform-independent Default login shell in Default script shell in License Source code availability User interface Mouse support Unicode support ISO 8601 support Console redirection Stream redirection Configurability Startup/shutdown scripts Batch scripts Logging Available as statically linked, independent single file executable

Interactive features

Shell Command
name
completion
Path
completion
Command
argument
completion
Wildcard
completion
Command
history
Mandatory
argument
prompt
Automatic
suggestions
Colored
directory
listings
Text
highlighting
Syntax
highlighting
Directory history, stack or similar features Implicit
directory
change
Auto­correction Integrated
environment
Snippets Value
prompt
Menu/options
prompt
Progress
indicator
Context
sensitive
help
Command
builder
Thompson shell Шаблон:No Шаблон: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 Шаблон:Partial Шаблон:No Шаблон: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 Шаблон:Partial Шаблон:No Шаблон:No
POSIX shell Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Partial Шаблон:No Шаблон:No
bash (v4.0) Шаблон:Yes Шаблон:Yes Шаблон:Yes2 Шаблон:Yes[nb 9] Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Partial Шаблон:No Шаблон:No
csh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Partial Шаблон:No Шаблон:No
tcsh Шаблон:Yes Шаблон:Yes Шаблон:Yes2 Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Partial Шаблон:No Шаблон:No
Hamilton C shell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Partial Шаблон:No Шаблон:No
Scsh Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No ? ? Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Partial Шаблон:No Шаблон:No
ksh (ksh93t+) Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Partial Шаблон:No Шаблон:No
pdksh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Partial Шаблон:No Шаблон:No
zsh Шаблон:Yes Шаблон:Yes Шаблон:Yes2 Шаблон:Yes[16] Шаблон:Yes Шаблон:Yes[17] Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Partial[18] Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes2 Шаблон:Yes Шаблон:Yes Шаблон:Partial Шаблон:Yes Шаблон:No
ash Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Partial Шаблон:No Шаблон:No
CCP Шаблон:No Шаблон: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[19]) Шаблон:No Шаблон:No Шаблон:No (only via external Шаблон:Mono command, in DR-DOS also via Шаблон:Mono / Шаблон:Mono internal commands) Шаблон:No Шаблон: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 Шаблон:No
Windows
CMD.EXE
Шаблон:Yes2 Шаблон:Yes2 Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes (via Шаблон:Mono command) Шаблон:No Шаблон:No Шаблон:No Шаблон:No
4DOS Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes[nb 12][nb 13] Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes (via Шаблон:Mono, Шаблон:Mono and Шаблон:Mono commands) Шаблон:Yes (via Шаблон:Mono function, and indirectly via a combination of Шаблон:Mono, Шаблон:Mono, Шаблон:Mono commands) Шаблон:No Шаблон:Yes Шаблон:No (except for Шаблон:Mono command for INI file directives)
4OS2 ? ? ? ? Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No ? Шаблон:No ? ? Шаблон:No Шаблон:Yes Шаблон:No
TCC (formerly 4NT) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes (via Шаблон:Mono, Шаблон:Mono, Шаблон:Mono and Шаблон:Mono commands) Шаблон:Yes (via Шаблон:Mono function, and indirectly via a combination of Шаблон:Mono, Шаблон:Mono, Шаблон:Mono commands)[nb 14] Шаблон:No Шаблон:Yes Шаблон:No
PowerShell Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Partial[20] Шаблон:Yes[21] Шаблон:Yes Шаблон:Yes Шаблон:Yes2Yes, in PSReadLine[22] module Шаблон:Yes2Yes, in ISE[23] Шаблон:Yes2Yes, in ISE[23] Шаблон:Yes Шаблон:Yes[24] Шаблон:Yes[25] Шаблон:Yes, in ISE[23] Шаблон:Yes[26] Шаблон:Yes, in ISE[23]
rc Шаблон:Yes[nb 15] Шаблон:Yes[nb 15] Шаблон:No Шаблон:No Шаблон:Yes[nb 15] Шаблон:No Шаблон: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 Шаблон:No
VMS DCL Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No ? ? Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No
fish Шаблон:Yes Шаблон:Yes Шаблон:Yes2[27] Шаблон:Yes[27] Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes[nb 16] Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No
Shell Command
name
completion
Path
completion
Command
argument
completion
Wildcard
completion
Command
history
Mandatory
argument
prompt
Automatic
suggestions
Colored
directory
listings
Text
highlighting
Syntax
highlighting
Directory history, stack or similar features Implicit
directory
change
Auto­correction Integrated
environment
Snippets Value
prompt
Menu/options
prompt
Progress
indicator
Context
sensitive
help
Command
builder

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. In PowerShell, the Start-Process[28] or Start-Job[29] cmdlets can be used.

Completions

Шаблон:Main article

Файл:Command-line-completion-example.gif
Command-line completion in Bash.

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 Шаблон:Keypress 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 suggest completions by calling a shell function.[30] 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

Шаблон: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

Шаблон:Further 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.

PowerShell allows commands, functions and scripts to define arguments/parameters as mandatory. The shell determines prior to invocation if there is any mandatory arguments/parameters which have not been bound, and will then prompt the user for the value(s) before actual invocation. [31]

Automatic suggestions

Шаблон:Main article

Файл:Powershell Intellisense example for the Get-Process cmdlet.gif
Command-line completion in PowerShell.

Shells featuring automatic suggestions display optional command-line completions as the user types. The PowerShell and fish shells natively support this feature; pressing the Шаблон:Keypress key inserts the completion.

Implementations of this feature can differ between shells; for example, PowerShell[32] and zsh[33] use an external module to provide completions, and fish derives its completions from the user's command history.[34]

Directory history, stack or similar features

Шаблон:Further 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[35] in the release of the C shell (csh).

PowerShell allows multiple named stacks to be used. Locations (directories) can be pushed onto/popped from the current stack or a named stack. Any stack can become the current (default) stack. Unlike most other shells, PowerShell's location concept allow location stacks to hold file system locations as well as other location types like e.g. Active Directory organizational units/groups, SQL Server databases/tables/objects, Internet Information Server applications/sites/virtual directories.

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.[36]

Autocorrection

Файл:Zsh autocompletion and autocorrection demo.gif
Zsh autocompletion and autocorrection demo for a telnet program.

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[22] 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".[37] These are not integrated features of the shells, however.

PowerShell has a built-in command and API functions (to be used when authoring commands) for writing/updating a progress bar. Progress bar messages are sent separates from regular command output and the progress bar is always displayed at the ultimate interactive users console regardless of whether the progress messages originates from an interactive script, from a background job or from a remote session.

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 Шаблон:Mono 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

Шаблон: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.[38]

An independent project offers syntax highlighting as an add-on to the Z Shell (zsh).[39] This is not part of the shell, however.

PowerShell provides customizable syntax highlighting on the command line through the PSReadLine[22] 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.[40]

Take Command Console (TCC) offers syntax highlighting in the integrated environment.

Context sensitive help

Шаблон:Main article

4DOS, 4OS2, 4NT / Take Command Console and PowerShell (in PowerShell ISE) looks up context-sensitive help information when Шаблон:Keypress is pressed.

Zsh provides various forms of configurable context-sensitive help as part of its Шаблон:Mono widget, Шаблон:Mono 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 substi­tutions Arith­metic Floating point Math function library Linear arrays or lists Assoc­iative arrays Lambda functions eval func­tion Pseudo­random number generation Bytecode
Bourne shell 1977 version Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
Bourne shell current version Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes[nb 8] Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
POSIX shell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
bash (v4.0) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No
csh Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
tcsh Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
Hamilton C shell Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No
Scsh Шаблон:Yes ? Шаблон:Yes ? ? ? Шаблон:Yes ? Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes
ksh (ksh93t+) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes
pdksh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No
zsh Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes
ash Шаблон:Yes Шаблон:Yes (via Шаблон:Mono) Шаблон:No Шаблон:Yes Шаблон: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 Шаблон:Mono (or Шаблон:Mono 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 Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No
4DOS Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes ? ? Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes
4OS2 ? ? ? ? ? ? ? ? Шаблон:No Шаблон:Yes Шаблон:Yes (Шаблон:Mono function) ?
TCC (formerly 4NT) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes ? ? Шаблон:Yes ? Шаблон:No Шаблон:Yes Шаблон:Yes (Шаблон:Mono function) Шаблон:Yes (via Шаблон:Mono command)
PowerShell Шаблон:Yes Шаблон:Yes (Try-Catch-Finally) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes[41] Шаблон:Yes Шаблон:Yes Шаблон:Yes[42] Шаблон:Yes Шаблон:Yes Шаблон:Yes
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 Шаблон:Yes Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No
fish Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон: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 Шаблон:No Шаблон:No
Bourne shell recent version Шаблон:Partial (prefix and suffix stripping in variable expansion) Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
POSIX shell Шаблон:Partial (prefix and suffix stripping in variable expansion) Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
bash (v4.0) Шаблон:Partial (prefix and suffix stripping in variable expansion) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes (Шаблон:Mono)
csh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
tcsh Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No
Hamilton C shell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes
Scsh ? ? Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:No
ksh (ksh93t+) Шаблон:Partial (prefix, suffix stripping and string replacement in variable expansion) Шаблон:Yes[43] Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes (with Шаблон:Mono, no following of symlinks)
pdksh ? Шаблон:Yes[43] Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
zsh Шаблон:Yes (through variable processing: e.g. substring extraction, various transformations via parameter expansion) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes (Шаблон:Mono or Шаблон:Mono to follow symlinks)
ash ? ? Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
CCP Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No
COMMAND.COM Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
OS/2 CMD.EXE Шаблон:No Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Partial (only in Шаблон:Mono command) Шаблон:No
Windows CMD.EXE Шаблон:Partial (only through Шаблон:Mono and Шаблон:Mono) Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Partial (only in Шаблон:Mono command) Шаблон:Yes (via Шаблон:Mono command, or, where available, indirectly via Шаблон:Mono subdir option)
4DOS Шаблон:Yes (through variable functions Шаблон:Mono, extended environment variable processing, various string commands and Шаблон:Mono and Шаблон:Mono) Шаблон:No Шаблон:No Шаблон:Yes Шаблон:Yes (via Шаблон:Mono attribute and Шаблон:Mono description options and Шаблон:Mono size, Шаблон:Mono time, Шаблон:Mono date, and Шаблон:Mono file exclusion ranges) Шаблон:Yes (via Шаблон:Mono command, or indirectly via Шаблон:Mono command or, where available, Шаблон:Mono subdir option)
4OS2 ? Шаблон:No Шаблон:No ? ? ?
TCC (formerly 4NT) Шаблон:Yes (through variable functions Шаблон:Mono, extended environment variable processing, various string commands and Шаблон:Mono and Шаблон:Mono) Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:Yes (via Шаблон:Mono attribute and Шаблон:Mono description options and Шаблон:Mono size, Шаблон:Mono time, Шаблон:Mono date, Шаблон:Mono owner, and Шаблон:Mono file exclusion ranges) Шаблон:Yes (via Шаблон:Mono command, or indirectly via Шаблон:Mono command or, where available, Шаблон:Mono subdir option)
PowerShell Шаблон:Yes Шаблон:Partial Шаблон:Yes Шаблон:Yes ? ?
rc ? ? Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
BeanShell ? ? Шаблон:Yes ? ? ?
VMS DCL Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Yes Шаблон:No Шаблон:Yes (via Шаблон:Mono)
fish Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes (Шаблон:Mono)

Inter-process communication

Shell Pipes Command substitution Process substitution Subshells TCP/UDP connections as streams Keystroke stacking
Bourne shell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:N/A[nb 17]
POSIX shell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:N/A[nb 17]
bash (v4.0) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:N/A[nb 17]
csh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:N/A[nb 17]
tcsh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:N/A[nb 17]
Hamilton C shell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No ?
Scsh Шаблон:Yes ? ? ? Шаблон:Yes Шаблон:N/A[nb 17]
ksh (ksh93t+) Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:N/A[nb 17]
pdksh Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:N/A[nb 17]
zsh Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:N/A[nb 17]
ash Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:N/A[nb 17]
CCP Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No
COMMAND.COM Шаблон:Yes Шаблон:No Шаблон:No Шаблон:Partial (only under DR-DOS multitasker via Шаблон:Mono) Шаблон:No Шаблон:No
OS/2 CMD.EXE Шаблон:Yes Шаблон:No Шаблон:No ? Шаблон:No Шаблон:No
Windows CMD.EXE Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:No Шаблон:No
4DOS Шаблон:Yes Шаблон:Yes ? Шаблон:Partial (via Шаблон:Mono and Шаблон:Mono, or via Шаблон:Mono, Шаблон:Mono and Шаблон:Mono and Шаблон:Mono) Шаблон:No Шаблон:Yes (via Шаблон:Mono and Шаблон:Mono)[44]
4OS2 Шаблон:Yes ? ? ? Шаблон:No Шаблон:Yes (via Шаблон:Mono)
TCC (formerly 4NT) Шаблон:Yes Шаблон:Yes ? Шаблон:Partial (via Шаблон:Mono and Шаблон:Mono) Шаблон:Yes (via Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono, Шаблон:Mono and Шаблон:Mono, client only) Шаблон:Yes (via Шаблон:Mono)
PowerShell Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes ?
rc Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:Yes Шаблон:No ?
BeanShell Шаблон:No ? ? ? Шаблон:Yes ?
VMS DCL Шаблон:Yes Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No
fish Шаблон:Yes Шаблон:Yes (Шаблон:Mono) Шаблон:No Шаблон:No Шаблон:No Шаблон:N/A[nb 17]

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

Шаблон:Importance section

Shell Secure (password) prompt File/directory passwords Execute permission Restricted shell subset Safe data subset
Bourne shell Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон:No
POSIX shell Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:No Шаблон:No
bash (v4.0) Шаблон:Yes ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон:No
csh Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон:No
tcsh Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон:No
Hamilton C shell Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No
Scsh Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:No Шаблон:No
ksh (ksh93t+) Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон:No
pdksh Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон:No
zsh Шаблон:Yes ? Шаблон:N/A[nb 19][nb 20] Шаблон:Yes Шаблон:No
ash Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes Шаблон: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 Шаблон:Mono syntax)[nb 21] Шаблон:Partial (only under DR-DOS, if files are password-protected for read and/or execute permission)[nb 22] Шаблон:No Шаблон:No
OS/2 CMD.EXE Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No
Windows CMD.EXE Шаблон:No Шаблон:No Шаблон:No Шаблон:No Шаблон:No
4DOS Шаблон:Yes (via Шаблон:Mono or Шаблон:Mono)[nb 23] Шаблон:Partial (only under DR-DOS via Шаблон:Mono syntax)[nb 21] Шаблон:Partial (only under DR-DOS, if files are password-protected for read and/or execute permission)[nb 22] Шаблон:No Шаблон:No
4OS2 ? Шаблон:No Шаблон:No Шаблон:No Шаблон:No
TCC (formerly 4NT) Шаблон:Yes (via Шаблон:Mono, Шаблон:Mono or Шаблон:Mono)[nb 23] Шаблон:No Шаблон:No Шаблон:No Шаблон:No
PowerShell Шаблон:Yes[nb 24] Шаблон:No Шаблон:No[nb 25] Шаблон:Yes[nb 26] Шаблон:Yes[45]
rc Шаблон:Some[nb 18] ? Шаблон:N/A[nb 19] Шаблон:Yes[46] Шаблон:No
BeanShell ? ? ? ? ?
VMS DCL Шаблон:Yes Шаблон:No Шаблон:Yes Шаблон:Yes Шаблон:No
fish Шаблон:Yes ? Шаблон:N/A[nb 19][nb 20] Шаблон:Yes ?

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.[47]

The shells bash, zsh and PowerShell offer this as a specific feature.[48][49] 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 Шаблон:Mono external command to switch off/on echoing of input characters.[50] In addition to not echoing back the characters, PowerShell's Шаблон:Mono 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Шаблон:Snd 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 Шаблон: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 is part of the POSIX specification for shells, and 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.[51][52]

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.[53]

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.[54] 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.

PowerShell data sections can contain constants and expressions using a restricted subset of operators and commands.[55] PowerShell data sections are used when e.g. localized strings needs to be read from an external source while protecting against unwanted side effects.

Notes

Шаблон:Reflist

References

Шаблон:Reflist

External links

Шаблон:Unix shells

  1. Шаблон:Citation
  2. Шаблон:Cite book
  3. As part of IEEE Std.1003.2-1992 (POSIX.2); integrated into IEEE Std.1003.1 with the 2001 revision.
  4. Шаблон:Cite newsgroup
  5. Шаблон:Citation, "Bash now supports the \u and \U Unicode escape."
  6. Шаблон:Cite newsgroup
  7. Шаблон:Cite web
  8. Шаблон:Cite journal
  9. Шаблон:Cite newsgroup
  10. Шаблон:Cite newsgroup
  11. 11,0 11,1 Default shell in OpenBSD is ksh (pdksh).
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. Шаблон:Cite web
  17. This applies only on reserved words and other syntactic features.
  18. zsh does not feature syntax highlighting, but a 3rd party project exists which offers this capability as an add-on: zsh-syntax-highlighting
  19. Ошибка цитирования Неверный тег <ref>; для сносок Paul_1997_OD-A3 не указан текст
  20. Шаблон:Cite web
  21. Шаблон:Cite web
  22. 22,0 22,1 22,2 Ошибка цитирования Неверный тег <ref>; для сносок PSReadLine не указан текст
  23. 23,0 23,1 23,2 23,3 Шаблон:Cite web
  24. 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.
  25. The Шаблон:Mono 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.
  26. The Шаблон:Mono cmdlet inspects the command definition and opens an interactive windows with a named input field for each parameter/switch
  27. 27,0 27,1 Шаблон:Cite web
  28. Шаблон:Cite web
  29. Шаблон:Cite web
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite web
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite book
  36. Шаблон:Cite book
  37. Шаблон:Cite web
  38. Шаблон:Cite web
  39. Шаблон:Cite web
  40. Шаблон:Cite web
  41. The .NET System.Math class defines mathematical functions that can be used through the shortcut Шаблон:Mono, e.g. Шаблон:Mono for the sinus function.[1]
  42. Шаблон:Cite web
  43. 43,0 43,1 Шаблон:Cite book
  44. Шаблон:Cite book
  45. Шаблон:Cite web
  46. Шаблон:Cite web
  47. Шаблон:Cite web
  48. Шаблон:Cite web
  49. Шаблон:Cite web
  50. Шаблон:Cite web
  51. Шаблон:Cite web
  52. Шаблон:Cite web
  53. Шаблон:Cite web
  54. Шаблон:Cite book
  55. Шаблон:Cite web


Ошибка цитирования Для существующих тегов <ref> группы «nb» не найдено соответствующего тега <references group="nb"/>