A командная оболочка - это интерфейс строки компьютерная программа для операционной системы.
Оболочка | Обычная среда | Обычно вызываемая | Представленная | Независимая от платформы | Оболочка входа по умолчанию в | Оболочка сценария по умолчанию в | Лицензия | Доступность исходного кода | Пользовательский интерфейс | Поддержка мыши | Поддержка Unicode | Поддержка ISO 8601 | Перенаправление консоли | Поток перенаправление | Возможность настройки | Сценарии запуска / выключения | Пакетные скрипты | Ведение жу рнала | доступен как статически связанный, независимый исполняемый файл с одним файлом |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
оболочка Thompson | UNIX | sh | 1971 | Н / Д | UNIX | UNIX | Н / Д | Да | На основе текста CLI | Нет | Нет | Н / Д | Да | Н / Д | Н / Д | НЕТ | НЕТ | НЕТ | НЕТ |
Оболочка Борна Версия 1977 года | 7-е изд.. UNIX | sh | 1977 | Да | 7-е изд. UNIX | 7-е изд. UNIX, | Собственный | Да | Текстовый CLI | Нет | Нет | Н / Д | Да | Да (произвольный fds ) | Да (через переменные и параметры) | Да (.profile) | Да (функция Unix) | Нет | Да |
Оболочка Bourne текущая версия | Различная UNIX | sh | 1977 | Да | SunOS-5.x, FreeBSD (пользователь без полномочий root) | SunOS-5.x | CDDL | Да | Текстовый CLI | Нет | Да | Н / Д | Да | Да (произвольно fds ) | Да (через переменные и параметры) | Да (.profile) | Да (функция Unix) | Да | Да |
POSIX оболочка | POSIX | sh | 1992 | Н / Д | Н / Д | POSIX | Н / Д | Н / Д | Текстовый интерфейс командной строки | Нет | Да, если используется настроенной локалью | Н / Д | Да | Да (произв ольно fds) | Да (с помощью чисел и опций) | Не указано (.p rofile, приведенного в качестве примера) | Да (функция Unix) | Да | Н / Д |
bash (v4) | POSIX | bash, sh | 1989 | Да | GNU, Linux (по умолчанию для root), macOS 10.3–10.14 | GNU, Linux, Haiku, macOS 10.3–10.14 | GPL | Да | Текстовый интерфейс командной строки | Нет | Да | Да (встроенный printf) | Да | Да (произвольный fds) | Да (через переменные и параметры) | Да (/ etc / profile,.bash_profile,.bash_login,.profile,. bashrc) | Да (функция Unix) | Да | Да |
csh | POSIX | csh | 1978 | Да | SunOS | ? | BSD | Да | Текстовый интерфейс системы | Нет | Нет | ? | Да | Да (stdin, stdout, stdout + stderr) | Да (через переменные и параметры) | Да (~ /.cshrc, ~ /.login, ~ /.logout) | Да (функция Unix) | Да | Да s |
tcsh | POSIX | tcsh, csh | 1983 | Да | FreeBSD (по умолчанию для root), ранее Mac OS X | ? | BSD | Да | Текстовый интерфейс строки | Нет | Да | ? | Да | Да (стандартный ввод, stdout, stdout + stderr) | Да (через переменные и параметры) | Да (/etc/csh.cshrc, /etc/csh.login, ~ /.tcshrc, ~ /.cshrc, ~ /.history, ~ /.login, ~ /.cshdirs) | Да (особенность Unix) | Да | Да |
Оболочка H amilton C | Win32, OS / 2 | csh | 1988 | Да (версия OS / 2 больше не поддерживается) | Необязательно | Необязательно | Собственный | Нет | Текстовый интерфейс командной строки | Нет | Нет | Да (оператор -t отметки времени) | Да | Да (stdin, stdout, stdout + stderr) | Да (через переменные и параметры) | Да (через login.csh, startup.csh и logout.csh) | Да (параметр строки) | Да | Да |
Scsh | POSIX | scsh | 1994 | Да | ? | ? | стиль BSD | Да | ? | ? | ? | ? | ? | Да | ? | ? | ? | ? | Да |
ksh (ksh93t +) | POSIX | ksh | 1983 | Да | AIX, HP-UX | OpenSolaris | Common Public Лицензия | Да | Текстовый интерфейс командной строки | Нет | Да | Да (встроенный printf с % (% F) T) | Да | Да (произвольный fds) | Да (через п еременные и параметры) | Да (профиль системы и пользователя и kshrc) | Да (функция Unix) | Да | Да |
pdksh | POSIX | ksh, sh | 1989? | Да | OpenBSD | OpenBSD | Public Domain | Да | Текстовый интерфейс командной строки | Нет | Нет | Н / Д | Да | Да (произвольные fds) | Да (с помощью чисел и опций) | Да ( / etc / profile,.profile) | Да (функция Unix) | Да | Да |
zsh | POSIX | zsh | 1990 | Да | Deepin, GoboLinux, Grml, macOS 10.15+ | Grml, macOS 10.15+ | MIT -style | Да | Текстовый интерфейс командной строки | через дополнительный код | Да | Да (различные внутренние функции, включая данные, с использованием формата % F strftime и опции -i для встроенной функции fc) | Да | Да (произвольные fds) | Да (через переменные, параметры, функции, стили и т. Д.) | Да ( система и пользователя zshenv, zprofile, zshrc, zlogin, zlogout) | Да (функция Unix) | Да | Да |
ash | POSIX | sh | 1989 | Да | Minix, Системы на базе BusyBox | NetBSD, Minix, Системы на основе BusyBox | BSD -стиль | Да | Текстовый интерфейс командной строки | Нет | Частично (для BusyBox, поддерживается при редактировании системы строки, но не при обработке строк) | Н / Д | Да | Да (произвольный fds) | Да (через переменные и параметры) | Да (/ etc / profile,.profile) | Да (функция Unix) | Да | Да |
CCP | CP / M, MP / M | (CCP) | 1976 (1974) | Нет | CP / M (без входа в систему), MP / M | CP / M, MP / M | Freeware (изначально проприетарный) | Да (изначально закрытый) | Текстовый CLI | Нет | Нет | Нет | Не т | Нет | Нет | Да (автоматически через $$$. SUB) | Частично (только через внешний Команду SUBMIT для обновлений $$$. SUB) | Нет | Да |
COMMAND.COM | DOS | КОМАНДА | 1980 | Нет (доступны сторонние реализации, не привязанные к конкретному поставщику или версии DOS) | DOS, Windows 95, 98, SE, ME | DOS, Windows 95, 98, SE, ME | зависит от поставщика, например MS -EULA или BSD / GPL (бесплатные клоны) | Нет (кроме OpenDOS, DR-DOS, PTS / DOS и FreeDOS) | Текстовый интерфейс командной строки | Нет | Нет | Нет (кроме DR-DOS) | Да (через COMMAND con: или CTTY con :) | Да (stdin, stdout) | Да ( через параметры запуска и переменные среды DR-DOS также поддерживает DIR / C / R пользовательская команда переключения по умолчанию) | Да (автоматически \ AUTOEXEC.BAT для основной оболочки или явно через / P, / P: имя файла. Bat или параметры запуска / K) | Да (с помощью команды CALL или параметров запуска / C и / K) | Нет | Да |
OS / 2 CMD.EXE | OS / 2, eComStation, ArcaOS | CMD | 1987 | Нет | OS / 2, eComStation, ArcaOS | OS / 2, eComStation, ArcaOS | IBM - EULA | Нет | Текстовый интерфейс командной строки | Нет | Нет | Нет | Нет | Да (стандартный ввод, stdout, stderr) | ? | Частично (только через параметр запуска / K) | Да (через команду CALL или запуск / C и / K параметры) | Нет | Да |
Windows CMD.EXE | Win32 | CMD | 1993 | Нет | Windows NT, 2000, XP, Server 2003, Vista | Windows NT, 2000, XP, Server 2003, Vista | MS -EULA | Нет | Текстовый интерфейс командной строки | Нет | Частично (CHCP 65001 для UTF-8, но аргументы программы по-прежнему закодированы в локальной кодовой странице) | Нет | Нет | Да | Да (через реестр, параметры запуска и переменные среды) | Да (автоматически через реестр или явно с помощью запуска / K) | Да (с помощью команды CALL или параметров запуска / C и / K) | Нет | Да |
4DOS, NDOS | DOS, Windows 95, 98, SE, ME | 4DOS, NDOS | 1989 (1986) | Нет (не привязан к конкретному поставщику или версии ОС) | Необязательно | Дополнительная | Лицензия MIT, с ограничениями | Да | Текстовый интерфейс программы с расширениями TUI | Да (всплывающие окна, справочная система, внутренняя переменная% _MOUSE, команда INKEY / M) | Нет | Да | Да (через CTTY con :, кроме DRAWBOX, DRAWLINE, DRAWVLINE, LIST, SCREEN, SCRPUT, SELECT, команды VSCRPUT и раскраска файлов / каталогов) | Да (stdin, stdout, stderr, stdout + stderr) | Да (через файл 4DOS.INI / NDOS.INI, запуск параметров, переменные среды, команда SETDOS) | Да (автоматически \ AUTOEXEC.BAT для основной оболочки и 4START.BTM / 4START.BAT, а также 4EXIT.BTM / 4EXIT.BAT для любой оболочки или явно через параметры запуска / P, / P: dir \ filename.ext или / K) | Да (с помощью команды CALL или параметров запуска / C и / K) | Да | Да |
4OS2 | OS / 2, eComStation, ArcaOS | 4OS2 | 1992 | Нет (не привязан к конкретным версиям OS / 2) | Необязательно (но в комплекте с ArcaOS) | Необязательно | Бесплатное | Да | Текстовый интерфейс командной строки | Нет | Нет | Нет | Нет | Да (stdin, stdout, stderr, stdo ut + stderr) | Да (через файл 4OS2.INI, параметры запуска, переменные среды, команда SETDOS) | Да (автоматически через файлы 4START.CMD / 4START.BTM, а также файлы 4EXIT.CMD / 4EXIT.BTM или явно через / K параметр startup.cmd) | Да (с помощью команды CALL или параметры запуска / C и / K) | Да | ? |
TCC (ранее 4NT) | Win32 | TCC | 1993 | Нет (не привязан к конкретной версиим NT) | необязательно | необязательно | Условно-бесплатное ПО | Нет | Текстовый интерфейс внутренней строки (Take Command : GUI ) | Да (консольная мышь, всплывающие окна, справочная система, % _XMOUSE, % _YMOUSE внутренние переменные, команда INKEY / M) | Да | Да | Нет | Да (stdin, stdout, stderr, stdout + stderr) | Да (через реестр, TCMD.INI / 4NT.INI файл, параметры запуска, переменные среды, команд а SETDOS) | Да (автоматически через реестр и TCSTART / 4START, а также TCEXIT / 4EXIT, или явно с помощью запуска запуска / K) | Да (с помощью команды CALL или параметров запуска / C и / K) | Да | Нет |
VMS DCL | OpenVMS | Автоматически для входа в систему / интерактивного процесса | 1977? | Да | VMS | VMS | Собственный, входит в состав VMS | только по специальной лицензии | Текст - на основе CLI | с DECwindows / Motif | Да | Да, по крайней мере, до стандарта 1988 года | Да | Да (sys $ input, sys $ output assignment) | Да (через символы, логические имена и параметры) | Да (SYS $ MANAGER: SYLOGIN.COM и пользовательский LOGIN.COM) | Да | Да | Нет |
PowerShell | .NET | PowerShell | 2006 | Да | Windows 10, 8, Server 2008, 7, Vista, XP | Windows 10, 8, Server 2008, 7 | MIT -стиль | Да | Графический интерфейс командной строки | Да | Да | Да | Нет | Да | Да (с помощью параметра и параметров) | Да (% USERPROFILE% \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1) | Да (функция PowerShell) | Да | Нет |
rc | Plan 9, POSIX | RC | 1989 | Да | Plan 9, Версия 10 Unix | Plan 9, Версия 10 Unix | Общественная лицензия Lucent | ? | ? | ? | Да | ? | ? | Да | ? | ? | ? | ? | Да |
BeanShell | Java | ? | 2005 | Да | ? | ? | LGPL | ? | ? | ? | Да | ? | ? | Да | ? | ? | ? | ? | Нет |
рыба | POSIX | рыба | 2005 | Да | GhostBSD | ? | GPL | Да | Текстовый интерфейс командной строки | ? | Да | ? | ? | Да (произвольный fds) | Да (через переменные среды и через веб-интерфейс через fish_config) | Да (/etc/fish/config.fish и ~ /.config / fish / config.fish) | Да (функция Unix) | Да (~ /.config / fish / fish_history *) | ? |
Ion | Redox, Linux | ion | 2015 | Да | Редокс | Редокс | MIT | Да | Текстовый интерфейс командной строки | ? | Да | Да | ? | Да (произвольный fds) | Да (соответствует спецификации XDG Base Directory) | Да (~ /.config / ion / initrc) | Да | Да (~ /.local / share / ion / history) | Частично (но его можно построить как единое целое) |
Оболочка | Обычная среда | Обычно вызывается | Введено | Независимо от платформы | Оболочка входа по умолчанию в | Оболочка сценария по умолчанию в | Лицензия | Доступность исходного кода | Пользовательский интерфейс | Поддержка мыши | Поддержка Unicode | ISO 8601 поддерживает | Перенаправление консоли | Stream перенаправление | настройка Возможность | Скрипты запуска / завершения | Пакетные скрипты | Ведение журнала | доступно как статически связанный, исполняемый файл одним файлом |
Оболочка | Команда. имя. завершение | Путь. завершение | Команда. аргумент. завершение | Подстановочный знак. завершение | Команда. история | Обязательный. аргумент. запрос | Автоматические. предложения | Цветной. каталог. списки | Текст. выделение | Синтаксис. выделение | История каталога, стек или аналогичные функции | Неявное изменение каталога.. | Автокоррекция | Интегрированная среда. | Фрагменты | Значение. запрос | Меню / параметры. приглашение | Ход выполнения. индикатор | Контекст. чувствительный. справка | Команда. построитель |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
оболочка Thompson | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Борн оболочка Версия 1977 года | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
Оболочка Борна текущая версия | Нет | Да | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | Да (CDPATH, pushd, popd, dirs), CDPATH с SVr4 | Нет | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
POSIX оболочка | Нет | Нет | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | Да (CDPATH) | Нет | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
bash (v4.0) | Да | Да | при оценке | Да | Да | Нет | Нет | Да | Да | Нет | Да (CDPATH, pushd, popd) | необязательно | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет |
csh | Да | Да | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | Да (cdpath, pushd, popd) | необязательно | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
tcsh | Да | Да | при определении | Нет | Да | Нет | Нет | Да | Да | Нет | Да (cdpath, pushd, popd) | необязательно | Да | Нет | Нет | Да | Нет | Нет | Нет | Нет |
Оболочка Гамильтон C | Да | Да | Нет | Да | Да | Нет | Нет | ? | ? | Нет | Да (cdpath, pushd, popd) | Нет | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
Scsh | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
ksh (ksh93t +) | Да (расширяемый) | Да (расширяемый) | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | Да (встроенный cdpath, pushd, popd реализован как функции) | Нет | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет |
pdksh | Да | Да | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет |
zsh | Да | Да | при выборе | Да | Да | Нет | Да (с помощью прогнозируемого или определяемого пользователя) | Да | Да | Стороннее расширение | Да | необязательно | Да | Нет | при определении (как виджеты ZLE) | Да | Да | Нет | Да | Нет |
ясень | Нет | Нет | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет |
CCP | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Нет | Нет | Не т | Нет | No | Нет | Нет | Нет | Нет (только в DR-DOS через % $ ON%, % $ OFF%, % $ HEADER%, % $ FOOTER% ) | Нет | Нет | Нет | Нет | Нет (только одношаговый с COMMAND / Y) | Нет | Нет | Нет (только через внешнюю команду ВЫБОР, в DR-DOS также через внутренние команды SWITCH / DRSWITCH) | Нет | Нет | Нет |
ОС / 2. CMD.EXE | Да | Да | Нет | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Windows. CMD.EXE | частично | частично | Нет | Нет | Да (F8) | Нет | Нет | Нет | Нет | Нет | Да (PUSHD, POPD) | Нет | Нет | Нет | Нет | Да (через SET / P) | Нет | Нет | Нет | Нет |
4DOS | Да | Да | Да | Да | Да | Нет | Нет | Да | Нет | Нет | (через всплывающее окно, расширенный поиск в каталоге, CDPATH, PUSHD, POPD, DIRHISTORY, DIRS, CDD, CD - команды и функция % @ DIRSTACK) | Да | Нет | Да | Нет | Да (через INPUT, INKEY и команды ESET) | Да (через @SELE Функция CT, и косвенно через комбинацию команд INKEY, INPUT, SWITCH) | Нет | Да | Нет (кроме ОПЦИЯ для директив файла INI) |
4OS2 | ? | ? | ? | ? | Да | Нет | Нет | Да | Нет | Нет | Да | Да | Нет | ? | Нет | ? | ? | Нет | Да | Нет |
TCC (ранее 4NT) | Да | Да | Да | Да | Да | Нет | Нет | Да | Нет | Да | (через всплывающее окно, расширенный поиск в каталоге, CDPATH, PUSHD, POPD, DIRHISTORY, DIRS, CDD, CD - команды и % @ DIRSTACK функция) | Да | Нет | Да | Нет | Да (с помощью команд INPUT, INKEY, ESET и SET / P) | Да (с помощью функций @SELECT и косвенно с помощью комбинаций команд INKEY, INPUT, SWITCH) | Нет | Да | Нет |
PowerShell | Да | Да | Да | Да | Да (F8) | Да | Да, в ISE | ? | ? | Да, в модуле ISE и PSReadLine (входит в v5.0) | Да; несколько стеков; несколько типов местоположения | Нет | Да, в модуле PSReadLine | Да, в ISE | Да, в ISE | Да | Да | Да | Да, во всплывающем окне ISE | |
rc | Да | Да | Нет | Нет | Да | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | ? | Нет | Нет | Нет | Нет |
BeanShell | Да | Да | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
VMS DCL | Схема минимальной уникальности | Нет | Нет | Нет | Да | Да | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет |
рыба | Да | Да | при оценке или анализе на страницах руководства | Да | Да | Нет | Да | ? | ? | Да | Да | Да | Да | Да | Нет | Да | (с помощью команды fish_config) | Нет | Нет | Нет |
Оболочка | Команда. имя. завершение | Путь. завершение | Команда. аргумент. завершение | Подстановочный знак. завершение | История команды. | Обязательный. аргумент. запрос | Автоматические. предложения | Цветные. каталоги. списки | Текст. выделение | Синтаксис. выделение | История каталогов, стек или аналогичные функции | Неявное. изменение каталога. | Автокоррекция | Интегрированная. среда | Фрагменты | Значение. подсказка | Меню / параметры. подсказка | Индикатор выполнения. | Контекст. чувствительный. справка | Команда. построитель |
позволяет оболочке запускать команду в фоновом режиме. Оболочки POSIX и другие оболочки Unix допускают выполнение в фоновом режиме с символами и в конце команды, а в PowerShell вы можете использовать Start-Process
или Start-Job
команды.
Выполнение выполняет пользователю вводить команду в строке строки, ища и предлагая совпадающие слова для неполных. Завершение обычно запрашивает нажатием клавиш завершения (часто Tab ↹).
Завершение имени команды - это завершение имени команды. В большинстве оболочек команда может быть программой в пути к команде (обычно $ PATH
), встроенной функцией, функцией или псевдонимом.
Завершение пути - это завершение пути к файлу, относительное или абсолютное.
Завершение подстановочного знака - это обобщение пути, где выражение соответствует любому количеству файлов с использованием любого поддерживаемого синтаксиса для сопоставления файлов.
Завершение переменных - это завершение имени переменной (переменная среда или переменная оболочки). Bash, zsh и fish имеют завершение для всех имен чисел. В PowerShell есть дополнения для имен параметров, имен чисел и - из пользовательских функций.
Завершение аргументов команды - это завершение аргументов конкретной команды. Существуют два типа аргументов: с именем и позиционные: именованные аргументы, называемые называемые имена, идентифицируются по имени или букве, предшествующей значению, тогда как позиционные аргументы состоят только из значений. Некоторые оболочки позволяют завершать аргументы, но немногие пакеты завершение значений.
Баш, зш и рыба выполняет завершение имени через определение, внешнее по отношению к команде, распространяемое завершение в отдельном файле определения. Для завершения имени / значения команды эти оболочки предполагают значение пути / имени файла, если для команды не определено. Завершение может быть настроено так, чтобы предлагать завершение путем вызова функции оболочки. Оболочка Fish дополнительно поддерживает синтаксический анализ страниц руководства для извлечения информации о параметрах, которая может быть полезной для улучшения дополнений / предложений. В PowerShell все типы команд (командлеты, функции, файлы сценариев) по своей сути предоставляют данные об именах, типах и диапазонах / списках допустимых значений для каждого аргумента. Эти метаданные значения используются PowerShell для автоматической поддержки аргумента и завершения для встроенных команд / функций, пользовательских команд / функций, а также для файлов сценариев. Отдельные командлеты также определяют динамическое завершение аргументов, когда выполняется вычисление динамически в работающей системе.
Пользователь оболочки может построить, что он / она набирает что-то похожее на то, что пользователь вводил раньше. Если оболочка поддерживает историю команд, пользователь может вызвать предыдущую команду в строковом редакторе и отредактировать ее перед повторным вводом.
Оболочки, поддерживающие завершение, также могут иметь возможность напрямую завершить команду из истории команд, учитывая частичную / начальную часть предыдущей команды.
Большинство современных оболочек истории команд. Оболочки, которые включают в себя историю команд в целом, а также сборник команд из истории, а не просто вызов команд из истории. В дополнение к обычному тексту команды PowerShell также записывает время начала и окончания выполнения и статуса выполнения в историю команд.
Обязательные аргументы / параметры - это аргументы / параметры, которым должно быть присвоено значение при вызове команды, функции или сценария. Оболочка, которая может определить перед вызовом, что отсутствуют обязательные значения, может помочь интерактивному пользователю, запрашивая эти значения вместо того, чтобы команда сбой. Наличие оболочки для пропущенных значений позволит автору сценария, команды или функции пометить параметр как обязательный вместо создания кода сценария, который либо запрашивает отсутствующие значения (после определения, что он выполняется в интерактивном режиме), либо завершается ошибкой с сообщением.
PowerShell позволяет командам, функции и скриптам определять аргументы / параметры как обязательные. Перед вызовом оболочка определяет, есть какие-либо обязательные аргументы / параметры, которые не были связаны, и запрашивает у пользователя значение (я) перед фактическим вызовом.
С автоматическими предложениями оболочка отслеживает, когда интерактивный пользователь вводит текст, отображает контекстно-зависимые предложения, не прерывая набора текста вместо пользователя, явно запрашивающего завершение.
Интегрированная среда сценариев PowerShell использует обнаруживаемые метаданные для предоставления «intellisense» - т. е. Предлагает, которые автоматически вводят данные, в дополнение к тому, когда явно запрашивает списки результатов пользователя, например, Вкладка
Оболочка может записывать местоположения, которые пользователь использовать в качестве текущих местоположений, и быстрое переключение на любое местоположение / каталог в истории.
Одно из применений стека каталогов zsh - запись истории каталогов. В частности, для этой цели используются параметр AUTO_PUSHD и расширенные аргументы и завершение cd.
PowerShell позволяет использовать несколько именованных стеков. Местоположения (каталоги) могут быть вставлены / извлечены из текущего стека или именованного стека. Любой стек может стать текущим (по умолчанию) стеком. В отличие от других оболочек, концепция местоположения PowerShell позволяет стекам местоположений хранить местоположение файловой системы, а также другие типы местоположений, например, Active Directory организационные единицы / группы, SQL Server базы данных / таблицы / объекты, Internet Information Server приложения / сайты / виртуальные каталоги.
4DOS и Take Command Console записывают историю текущих каталогов и позволяют пользователю переключаться на каталог в истории, используя всплывающее окно.
Имя каталога может использоваться непосредственно в качестве команды, которая неявно изменяет текущее местоположение каталога.
Это следует отличать от несвязанной функции загрузочного диска, поддерживаемой Concurrent DOS, Multiuser DOS, System Manager и REAL / 32, где буква диска L: будет неявно обновлена, чтобы указывать на путь загрузки загруженного приложения, тем самым позволяя приложениям вместо этого ссылаться на файлы, находящиеся в их каталоге загрузки, под стандартной буквой диска. по абсолютному пути.
Если командная строка не соответствует команде или аргументам напрямую, проверка орфографии может автоматически исправить типичные опечатки (например, чувствительность к регистру, пропущенные буквы). Есть два подхода к этому; оболочка может либо предложить возможные исправления при вызове команды, либо это может произойти раньше как часть завершения или автозаполнения.
Оболочки tcsh и zsh имеют дополнительную функцию проверки / исправления орфографии при вызове команды.
Fish выполняет автокоррекцию после завершения и самовнушения. Таким образом, эта функция не мешает при вводе всей команды и нажатии клавиши Enter, тогда как широкое использование вкладок и клавиш со стрелкой вправо делает оболочку в основном нечувствительной к регистру.
Модуль PSReadLine PowerShell (который поставляется с версией 5.0) отправляет возможность указать CommandValidationHandler ScriptBlock, который запускается передкой команды. Это позволяет настраивать исправление ошибочных команд и Проверка перед фактическим запуском команды.
Интегрированная среда представляет собой интеграцию международной строки с редакторами (обычно несколько документов), справочной системой и, возможно, отладкой и другие инструменты.
Take Command Console (TCC) поставляется с интегрированной средой с панелью системы файлов, редактором, пакетным отладчиком и т. Д.
PowerShell ISE включает панель командной строки с поддержкой встроенных команд, копирование-вставка, несколько редакторов, панель справки, панель проводника команд и интерфейс сценариев, позволяющий сценариям / модулям управлять меню, надстройками и т. д. ISE (меню, окна, ярлыки, надстройки) настраиваются с помощью сценариев.
Фрагменты - это небольшие повторно используемого кода скрипта. Фрагменты часто используются для употребий клавиш или для помощи с общими шаблонами сценариев. Многие текстовые редакторы фрагменты для написания сценариев либо встроенные функции, либо через плагины.
PowerShell поддерживает фрагменты интегрированной среды среды среды обитания (ISE), используя Ctrl+J.
Сценарий оболочки может запрашивать у интерактивного пользователя.
Сценарий оболочки может предоставить интерактивному пользователю список вариантов.
Сценарий оболочки (или задание) может сообщить интерактивному пользователю ходе о выполнении длительных задач.
Системы Unix / Linux могут предлагать другие инструменты, использующие индикаторы выполнения из сценариев или как команды, такие как программа «pv». Однако это не встроенные функции оболочек.
PowerShell - встроенная команда и функции API (первая версия при создании команд) для написания / обновления индикатора выполнения. Сообщения индикатора выполнения отправляются отдельно от обычного вывода команды, и индикатор выполнения всегда отображается на конечной интерактивной пользовательской консоли независимо от того, исходят ли сообщения о ходе выполнения из интерактивного сценария, из фонового задания или из удаленного сеанса.
Выходные данные выполнить команду можно настроить в таблице / сетке, которые можно интерактивно сортировать и фильтровать и / или иным образом манипулировать после выполнения команды.
PowerShell Командлет Out-GridView отображает данные в интерактивном окне с интерактивной сортировкой и фильтрацией.
Процессоры системы строки JP Программное обеспечение включает настраиваемую систему раскраску имен файлов и каталогов в списках каталогов на основе их расширения файлов и / или атрибутов с помощью необязательной среды% COLORDIR%.
Для оболочек Unix / Linux это функция команды ls и терминала.
Процессоры системы строки в DOS Plus, Многопользовательский DOS, REAL / 32 и во всех версиях DR-DOS поддерживает ряд дополнительных окружений для определения управляющих последовательностей, позволяющих управлять выделением, реверсией или раскрашиванием текста для отображения или печати таких командх, как TYPE. Все упомянутые процессоры системы строки % $ ON% и % $ OFF%. Если определено, эти следующие будут выдаваться до и после имен файлов. Типичная последовательность для% $ ON% будет \ 033 [1m в сочетании с ANSI.SYS, \ 033p для терминала ASCII или \ 016 для IBM или ESC. / P принтер. Аналогично, типичные установки для% $ OFF% будут \ 033 [0m, \ 033q, \ 024 соответственно. Переменные % $ HEADER% и % $ FOOTER% поддерживаются только COMMAND.COM в DR-DOS 7.02 и выше для определения последовательностей, генерируемых до и после текстовых блоков с целью управления выделением текста, разбиение на страницы или другие параметры форматирования.
Для оболочек Unix / Linux это функция терминала.
Независимый проект предлагает подсветку синтаксиса в качестве надстройки к Z Shell (zsh). Однако это не часть оболочки.
PowerShell обеспечивает настраиваемую подсветку синтаксиса в командной строке через модуль PSReadLine. Этот модуль можно использовать с PowerShell v3.0 +, он включен в v5.0. Кроме того, он загружается по умолчанию в строке "powershell.exe" в версии 5.0. PowerShell ISE также включает подсветку синтаксиса в командной строке, а также на панели скриптов. Take Command Console (TCC) предлагает подсветку синтаксиса в интегрированной среде.
4DOS, 4OS2, 4NT / Take Command Console и PowerShell (в PowerShell ISE) просматривают контекстно-зависимую справочную информацию при нажатии F1.
Zsh предоставляет различные формы настраиваемой контекстно-зависимой справки как часть своего виджета run-help, команды _complete_help или в завершении опций для некоторых команд.
Конструктор команд - это управляемый диалог, который помогает пользователю заполнить команду. PowerShell имеет построитель команд, который может использовать PowerShell ISE отдельно с помощью командлета Show-Command.
Shell | Функции | Обработка исключений | Поиск и замена при подстановках чисел | Арифметика | Плавающая точка | Библиотека математических функций | Линейные массивы или списки | Ассоциативные массивы | Лямбда-функции | функция eval | Генерация псевдослучайного числа | Байт-код |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Оболочка Борна версия 1977 года | Нет | Да (через ловушку) | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет |
Оболочка Борна текущая версия | Да, начиная с SVR2 | Да (через ловушку) | Нет | Да | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет |
POSIX shell | Да | Да (через ловушку) | Нет | Йе s | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет |
bash (v4.0) | Да | Да (через ловушку) | Да (через $ {//} синтаксис) | Да | Нет | Нет | Да | Да | Нет | Да | Да ($ RANDOM) | Нет |
csh | Нет | Нет | Да (с помощью синтаксиса $ var: s ///) | Да | Нет | Нет | Да | Нет | Нет | Да | Нет | Нет |
tcsh | Нет | Нет | Да (посредством синтаксиса $ var: s ///) | Да | Нет | Нет | Да | Нет | Нет | Да | Нет | Нет |
Оболочка Гамильтон C | Да | Нет | Да (с помощью синтаксиса $ var: s ///) | Да | Да | Да | Да | Нет | Нет | Да | Да (случайная утилита) | Нет |
Scsh | Да | ? | Да (через строковые фу нкции и d регулярные выражения) | ? | ? | ? | Да | ? | Да | Да | Да (случайное целое число, случайное действительное число) | Да (компилятор - это виртуальная машина Схема48, через scshvm) |
ksh (ksh93t +) | Да | Да (через ловушку) | Да (через $ {//} синтаксис и встроенные команды) | Да | Да | Да | Да | Да | Нет | Да | Да ($ RANDOM) | Да (компилятор называется shcomp) |
pdksh | Да | Да (через ловушку) | Нет | Да | Нет | Нет | Да | Нет | Нет | Да | Да ($ RANDOM) | Нет |
zsh | Да | Да | Да (с помощью синтаксиса $ {: s //} и $ {//}) | Да | Да | Да (модуль zsh / mathfunc) | Да | Да | Нет | Да | Да ($ RANDOM) | Да (встроенная команда zco mpile) |
ясень | Да | Да (через ловушку) | Нет | Да (с 1992 г.) | Нет | Нет | Нет | Нет | Нет | Да | Нет | Нет |
CCP | Нет | ? | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Нет | Частично (только автоматический отказ (через COMMAND / F (или / N в некоторых версиях DR-DOS)) | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
OS / 2 CMD.EXE | Нет | Нет | Нет | ? | Нет | Нет | ? | Нет | Нет | Нет | Нет | Нет |
Windows CMD.EXE | Да (через CALL: label) | Нет | Да (через SET% varname: синтаксис выражения) | Да (через SET / A) | Нет | Нет | Да (через SET) | Нет | Нет | Нет | Да (% случайный%) | Нет |
4DOS | Да | Да ( через команду ON, дополнительный автоматический отказ через 4DOS / F) | Да (через функцию % @ Replace [...]) | Да (через SET / A) | ? | ? | Да (через диапазоны, списки включения, списки @file и команда FOR) | Нет | Нет | Да | Да (% @ Random [...]) | Да (с помощью команды BATCOMP) |
4OS2 | ? | ? | ? | ? | ? | ? | ? | ? | Нет | Да | Да (% @ Random [...]) | ? |
TCC (ранее 4NT) | Да | Да (с помощью различных ON и команд... MONITOR) | Да (через функцию % @ Replace [...]) | Да (через SET / A) | ? | ? | Да (через диапазоны, включая списки, @ списки файлов и команда FOR) | ? | Нет | Да | Да (% @ Функция случайного [...]) | Да (через команда BATCOMP) |
PowerShell | Да | Да (пример-поймать-окончательно) | Да (- оператор замены) | Да | Да | [Математический] класс | Да | Да | Да | Да | Да | Да, автоматически |
rc | Да | Да | Нет | ? | ? | ? | Да | ? | Нет | Да | Нет | Нет |
BeanShell | Да | Да | ? | Да | ? | ? | Да | Да | Нет | Да | Да | Да |
VMS DCL | Да | Да | Нет | Да | Нет | да, для скомпилированных программ | Да | Нет | Нет | Нет | Нет | Нет |
рыба | Да | Да (через ловушку) | Нет | Да | Да | Да | Да | Нет | Нет | Да | Да (случайный) | Нет |
Оболочка | Обработка строк | Чередование (Раскрытие скобок ) | Сопоставление с образцом (регулярные выражения встроено) | Сопоставление с образцом (имя_файла подстановка ) | Подстановочные квалификаторы ( создание файла из подкаталогового уровня) | Рекурсивная подстановка файлов (создание файлов из подкаталогового уровня) |
---|---|---|---|---|---|---|
Оболочка Борна Версия 1977 года | ? | Нет | № | Да (*, ?, [...]) | Нет | Нет |
Оболочка Борна последняя версия | Частичная (удаление префиксов и суффиксов при раскрытии чисел) | Нет | Нет | Да (*, ?, [...]) | Нет | Нет |
POSIX оболочка | Частичная (удаление префиксов и суффиксов при раскрытии чисел) | Нет | Нет | Да (*, ?, [...]) | Нет | Нет |
bash (v4.0) | Частично (удаление префиксов и суффиксов при раскрытии числа) | Да | Да | Да (*, ?, [...], {...}) | Нет | Да (** /...) |
csh | Да (: s и другие операторы редактирования) | Да | Нет | Да | Нет | Нет |
tcsh | Да (: s и другие операторы редактирования) | Да | Да | Да | Нет | Нет |
Оболочка Hamilton C | Да (: s и другие операторы редактирования + substr, strlen, strindex, printf, revers e, upper, lower, concat и другие встроенные функции) | Да | Нет | Да | Нет | Да (через неопределенный каталог "..." подстанов очный знак) |
Scsh | ? | ? | Да | Да | Нет | Нет |
ksh (ksh93t +) | Частичный (префикс, удаление суффикса и замена строки в раскрытии замещающей) | Да | Да | Да (*, ?, [...]) | Нет | Да (с set -G, без следования символических ссылок) |
pdksh | ? | Да | Нет | Да | Нет | Нет |
zsh | Да (посредством обработки: например, извлечение подстроки, различные преобразования с помощью расширения параметров) | Да | Да | Да (*, ?, [...], расширенная подстановка ) | Да | Да (** /... или *** /... для перехода по символическим ссылкам) |
ясень | ? | ? | Нет | Да | Нет | Нет |
CCP | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Нет | Нет | Нет | Да (*, ?) | Нет | Нет |
OS / 2 CMD.EXE | Нет | Нет | Нет | Да (*, ?) | Частично (только команда в DIR / A:...) | Нет |
Windows CMD.EXE | Частично (только через FOR / F и SET / A) | Нет | No | Да (*, ?) | Частично (только в команде DIR / A:...) | Да (с помощью команды FOR / R или, если возможно, косвенно с помощью / S параметр subdir) |
4DOS | Да (с помощью функций числа % @..., расширенная обработка среды среды, различные строки c команды и FOR / F и SET / A) | Нет | Нет | Да (*, ?, [...], расширенные символы подстановки, всплывающая команда SELECT) | Да (через атрибут / A:... и / I "... "параметры описания и размер / [S...], / [T...] время, / [D...] дата и / [!...] диапазоны исключения файлов) | Да (с помощью команды FOR / R или косвенно с помощью команд GLOBAL или, если возможно, подкаталог / S) |
4OS2 | ? | Нет | Нет | ? | ? | ? |
TCC (ранее 4NT) | Да (с помощью функций числа % @..., расширенной обработки среды среды, различных строковых команд и FOR / F и SET / A) | Нет | Да | Да (*, ?, [...], расширенные символы подстановки, всплывающая команда SELECT) | Да (через атрибут / A:... и / I "... "параметры описания и / [S...] размер, / [T...] время, / [D...] дата, / [O...] "владелец и / [!...] диапазоны исключения файлов) | Да (через FO Команда R / R или косвенно с помощью команды GLOBAL или, если возможно, каталог / S) |
PowerShell | Да (Concat / Substring / Insert / Remove / Replace, ToLower / ToUpper, Trim / TrimStart / TrimEnd, Compare, Contains / StartsWith / EndWith, Format, IndexOf / LastIndexOf, Pad / PadLeft / PadRight, Split / Join, функции регулярных выражений и другие строковые функции.NET) | Нет | Да (полная поддержка регулярных выражений) | Да (*, ?, [...]) | ? | ? |
rc | ? | ? | Нет | Да | Нет | Нет |
BeanShell | ? | ? | Да | ? | ? | ? |
VMS DCL | Да | Нет | Нет | Да | Нет | Да (через [SUBDIR...]) |
fish | Да (встроенная строковая функция) | Да | да (через встроенные функции сопоставления строк и замены строк) | Да (*, ?, {...}) | Нет | Да (** /...) |
Оболочка | Конвейеры | Подстановка команд | Подстановка процесса | Подоболочки | TCP / UDP подключение ионы в виде потоков | Сложение прикрепий клавиш |
---|---|---|---|---|---|---|
Оболочка Борна | параллельных байтов | Да | Нет | Да | Нет | Н / Д |
POSIX оболочка | байт одновременно | Да | Нет | Да | Нет | Н / Д |
bash (v4.0) | байт одновременно | Да | Да (если система поддерживает / dev / fd / ⟨n⟩ или именованные каналы) | Да | Да (только клиент) | Н / Д |
csh | байт одновременно | Да | Нет | Да | Нет | Н / Д |
tcsh | байт одновременно | Да | Нет | Да | Нет | Н / Д |
Оболочка Гамильтон C | одновременных байтов | Да | Нет | Да | Нет | ? |
Scsh | текст | ? | ? | ? | Да | Н / Д |
ksh (ksh93t +) | байтов ( могут содержать сериализованные объекты, если используется print -C) одновременно | Да ($ (...) и $ { | Да (если система поддерживает / dev / fd / ⟨n⟩) | Да | Да es (и поддержка SCTP, только клиент) | Н / Д |
пдкш | синхронных байтов | Да | Нет | Да | Нет | Н / Д |
zsh | байт одновременно | Да | Да | Да | Да (клиент и сервер, но только TCP) | Н / Д |
ash | байт одновременно | Да | Нет | Да | Нет | Нет |
CCP | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | текстовые последовательные временные файлы | Нет | Нет | Частично (только в режиме многозадачности DR-DOS через COMMAND.COM / T) | Нет | Нет |
OS / 2 CMD.EXE | одновременный текст | Нет | Нет | ? | Нет | Нет |
Windows CMD.EXE | одновременный текст | Да (с помощью команды FOR / F) | Нет | Д а (Обратный апостроф: `в FOR / F usebackq) | Нет | Нет |
4DOS | последовательный текст временные файлы | Да (с помощью команды FOR / F) | ? | Частично (vi a % @ EXECSTR и % @ EXEC, или через SET / M, ESET / M и UNSET / M и % @ MASTER [...]) | Нет | Да (через KEYSTACK и KSTACK ) |
4OS2 | одновременный текст | ? | ? | ? | Нет | Да (через KEYSTACK) |
TCC (ранее 4NT) | одновременный текст | Да (с с помощью команды FOR / F) | ? | Частично (с помощью % @ EXECSTR и % @ EXEC) | Да (через FTP, TFTP, FTPS, SFTP, HTTP, HTTPS и IFTP, только клиент) | Да (через KEYSTACK) |
PowerShell | одновременно объекты | Да | Нет | Да | Да | ? |
rc | одновременный текст | Да | Да (через: <{cmd} if system supports / dev / fd / n⟩) | Да | Нет | ? |
BeanShell | не поддерживается | ? | ? | ? | Да | ? |
VMS DCL | текст (посредством команды PIPE) | Да | Нет | Да (порождение) | Да (только TCP -сервер) | Нет |
fish | одновременно байт | Да (...) | Нет (сломано) | Нет | Нет | Н / Д |
В ожидании того, что данное запущенное принимать может в качестве ввода с клавиатуры, пользователь оболочки дает команду оболочке сгенерировать последовательность имитированных различных клавиш, которая будет интерпретировать как ввод с клавиатуры интерактивного пользователя. Посредством последовательностей приложенных клавиш пользователь может указать выполнить действия, которые были выполнены с помощью перенаправления ввода или которые иным образом потребовали бы интерактивного пользователя. Например, если действует приложение, которое не считывает стандартные вводимые, различает обычные и расширенные клавиши, очищает очередь перед новым вводом при запуске или при определенных условиях, потому что оно вообще не считывает стандартный ввод. Стекинг клавишных клавиш обычно используются средства управления временем отправки имитированных клавиш или увеличения клавиш до тех пор, пока очередь не будет очищена и т. Д. Это также позволяет имитировать клавиши, которые не используются на клавиатуре.
Оболочка | Запрос пароля (пароль) | Зашифрованные переменные / параметры | Пароли файлов / каталогов | Разрешение на выполнение | Блокировка ненадежных сценариев | Ограниченная оболочка подмножество | Безопасное подмножество данных |
---|---|---|---|---|---|---|---|
Оболочка Борна | через stty | Нет | ? | N/A | Нет | Да | Нет |
POSIX оболочка | через stty | Нет | ? | N/A | Нет | Нет | Нет |
bash (v4.0) | читать -s | Нет | ? | N/A | Нет | Да | Нет |
csh | через stty | Нет | ? | N/A | Нет | Да | Нет |
tcsh | через stty | Нет | ? | N/A | Нет | Да | Нет |
Оболочка Гамильтон C | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Scsh | через stty | Нет | ? | N/A | Нет | Нет | Нет |
ksh (ksh93t +) | через stty | Нет | ? | N/A | Нет | Да | Нет |
pdksh | через stty | Нет | ? | N/A | Нет | Да | Нет |
zsh | читать -s | Нет | ? | N/A | Нет | Да | Нет |
пепел | через stty | Нет | ? | N/A | Нет | Да | Нет |
CCP | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Частично (только для DR- DOS, запрашивает пароль, если файл / каталог защищен) | Нет | Частично (только в DR-DOS через \ dirname; dirpwd \ filename; синтаксис filepwd) | Частично (только в DR-DOS, если файлы защищены паролем для чтения и / или разрешения на выполнение) | Нет | Нет | Нет |
OS / 2 CMD.EXE | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Windows CMD.EXE | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
4DOS | Да (через INPUT / P или INKEY / P) | Нет | Частично (только un der DR-DOS через \ dirname ;; dirpwd \ filename ;; синтаксис filepwd) | Частично (только в DR-DOS, если файлы защищены паролем для чтения и / или разрешения на выполнение) | Нет | Нет | Нет |
4OS2 | ? | Нет | Нет | Нет | Нет | Нет | Нет |
TCC (ранее 4NT) | Да (через INPUT / P, INKEY / P или QUERYBOX / P) | Нет | Нет | Нет | Нет | Нет | Нет |
PowerShell | Да | Да | Нет | No | Да | Да | Да |
rc | через stty | Нет | ? | N/A | Нет | Да | Нет |
BeanShell | ? | ? | ? | ? | ? | ? | ? |
VMS DCL | Да | Нет | Нет | Да | Нет | Да | Нет |
рыба | читать -s | Нет | ? | Н / Д | Нет | Да (через fish -l) | ? |
Некоторым сценариям оболочки требуется запрашивать у пользователя конфиденциальную информацию такие как пароли, личные цифровые ключи, PIN-коды или другие n конфиденциальная информация. Чувствительный ввод не должен отражаться эхом на экране / устройстве ввода, где он может быть получен посторонними лицами. Также следует избегать представления конфиденциальной информации в виде открытого текста, так как это может позволить скомпрометировать информацию, например, через файлы подкачки, дампы ядра и т. Д.
Оболочки bash, zsh и PowerShell предлагают это как особую функцию. Оболочки, которые не предлагают это как особую функцию, могут по-прежнему отключать эхо с помощью других средств. Оболочки, выполняемые воперационной системе Unix / Linux, могут использовать внешнюю команду stty для включения / выключения эха вводимых символов. В дополнение к тому, что символы не повторяются, параметр PowerShell -AsSecureString также шифрует ввод посимвольно во время процесса ввода, гарантируя, что строка никогда не будет представлена в незашифрованном виде в памяти, где она может быть скомпрометирована посредством дампов памяти, сканирования, транскрипция и т. д.
Если сценарий считывает пароль в переменную среды, он находится в памяти в виде обычного текста, и, таким образом, к нему можно получить доступ через дамп ядра. Он также находится в среде процесса, который может быть доступен другим процессам, запущенным сценарием.
PowerShell может работать с зашифрованными строковыми переменными / параметрами. Зашифрованные переменные гарантируют, что значения не будут случайно раскрыты, например, стенограммы, эхо, файлы журналов, памяти или аварийные дампы или даже вредоносное сканирование памяти. PowerShell также поддерживает сохранение таких зашифрованных строк в текстовых файлах, защищенных ключом, принадлежащим текущему пользователю.
Некоторые операционные системы определяют разрешение на выполнение, которое может быть предоставлено пользователям / группам для файла.
В системах Unix разрешение на выполнение контролирует доступ к вызову файла как программы и применяется как к исполняемым файлам, так и к сценариям. Поскольку разрешение применяется в загрузчике программ , ни вызывающая программа, ни вызываемая программа не обязаны требовать разрешения на выполнение - это также относится к оболочкам и другим программам-интерпретаторам. Такое поведение определяется библиотекой POSIX C, которая используется для взаимодействия с ядром. POSIX указывает, что семейство функций exec
должно завершиться ошибкой с EACCESS (разрешение отклонено), если файл запрещает разрешение на выполнение (см. execve
- Справочник по системным интерфейсам, Единая спецификация UNIX, выпуск 7 из Открытая группа ).
Разрешение на выполнение применяется только при прямом запуске сценария. Если сценарий вызывается в качестве аргумента интерпретирующей оболочки, он будет выполняться независимо от того, имеет ли пользователь разрешение на выполнение для этого сценария.
Хотя Windows также определяет разрешение на выполнение, ни одна из специфичных для Windows оболочек не блокирует выполнение сценария, если разрешение не было предоставлено.
Некоторые оболочки блокируют сценарии, признанные ненадежными, или отказываются запускать сценарии, если это предписано системным администратором.
PowerShell может быть настроен на блокировку выполнения сценариев, которые были помечены как полученные из неизвестного / ненадежного источника (например, из Интернета). Интернет-приложения, такие как веб-браузеры, клиенты обмена мгновенными сообщениями, программы чтения почты и т. Д., Маркируют файлы, загруженные из Интернета, с помощью зоны происхождения в альтернативном потоке данных, который понимается PowerShell.
Можно использовать политики подписи сценария / кода, чтобы гарантировать, что операционный отдел запускает только утвержденные сценарии / код, которые были просмотрены и подписаны доверенным рецензентом / утверждающим. Режимы подписи также защищают от подделки. Если сценарий отправляется от поставщика клиенту, клиент может использовать подпись, чтобы гарантировать, что сценарий не был изменен во время передачи и что сценарий действительно исходит от поставщика, а не злоумышленника, пытающегося заставить оператора запустить сценарий атаки.
PowerShell можно настроить так, чтобы разрешить выполнение сценариев, заблокированных в противном случае (например, исходящих из ненадежной зоны), если сценарий был подписан цифровой подписью с использованием доверенного цифрового сертификата.
Компания может захотеть применить ограничение исполнения в глобальном масштабе внутри компании и / или в определенных частях компании. Он может захотеть установить политику для запуска подписанных сценариев, но разрешить определенным подразделениям компании устанавливать свои собственные политики для зональных ограничений.
PowerShell позволяет применять политики блокировки сценариев на нескольких уровнях: локальный компьютер, текущий пользователь и т. Д. Политика более высокого уровня переопределяет политику более низкого уровня, например если политика определена для локальной машины, она действует для всех пользователей локальной машины, только если она не определена на более высоком уровне, ее можно определить для более низких уровней.
Некоторые оболочки могут быть запущены или настроены для запуска в режиме, в котором пользователю доступен только ограниченный набор команд и действий. Хотя это и не граница безопасности (блокируется команда доступа к ресурсу, а не к ресурсу), он, тем не менее, обычно используется для ограничения действий пользователей перед входом в систему.
Ограниченный режим является частью POSIX для оболочек, и большинство оболочек Linux / Unix поддерживают такой режим, в котором несколько встроенных команд отключены и могут быть вызваны только внешние команды из определенного каталога.
PowerShell поддерживает ограниченные режимы через файлы конфигурации сеанса или конфигурации сеанса. Файл конфигурации сеанса может определять видимые (доступные) командлеты, псевдонимы, функции, поставщиков путей и т. Д.
Сценарии, которые вызывают другие сценарии, могут представлять угрозу безопасности, поскольку потенциально могут выполнить внешний код в контексте пользователя, запустившего исходный скрипт. Сценарии обычно разрабатываются таким образом, чтобы включать исключительно сценарии из известных безопасных мест; но в некоторых случаях, например предлагая пользователю способ настройки среды или загрузки локализованных сообщений, в сценарий может потребоваться включить другие сценарии / файлы. Один из способов уменьшить этот риск - предложить оболочке безопасное подмножество команд, которые могут быть выполнены включенным скриптом.
PowerShell разделы данных могут содержать константы и выражения с использованием ограниченного набора операторов и команд. Разделы данных PowerShell используются, например, когда локализованные строки необходимо читать из внешнего источника, обеспечивая при этом защиту от нежелательных побочных эффектов.