Comparação de shells de comando - Comparison of command shells

Bash , o shell padrão em muitos sistemas GNU / Linux.

Um shell de comando é uma interface de linha de comando para interagir e manipular o sistema operacional de um computador .

Características gerais

Concha Ambiente usual Normalmente invocado Introduzido Plataforma independente Shell de login padrão em Shell de script padrão em Licença Disponibilidade do código fonte Interface de usuário Suporte para mouse Suporte Unicode Suporte ISO 8601 Redirecionamento de console Redirecionamento de fluxo Configurabilidade Scripts de inicialização / desligamento Scripts de lote Exploração madeireira disponível como executável de arquivo único independente estaticamente vinculado
Concha de Thompson UNIX sh 1971 N / D UNIX UNIX N / D sim CLI baseada em texto Não Não N / D sim N / D N / D N / D N / D N / D N / D
Bourne shell versão 1977 7ª Ed. UNIX sh 1977 sim 7ª Ed. UNIX 7ª Ed. UNIX , Proprietário sim CLI baseada em texto Não Não N / D sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Sim ( .perfil ) Sim (recurso Unix) Não sim
Versão atual do Bourne shell Vários UNIX sh 1977 sim SunOS-5.x, FreeBSD (usuário não root) SunOS-5.x CDDL sim CLI baseada em texto Não sim N / D sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Sim ( .perfil ) Sim (recurso Unix) sim sim
Shell POSIX POSIX sh 1992 N / D N / D POSIX N / D N / D CLI baseada em texto Não Sim, se usado pelo local configurado N / D sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Não especificado ( .perfil fornecido como exemplo) Sim (recurso Unix) sim N / D
bash (v4) POSIX bash, sh 1989 sim GNU , Linux (padrão para root), macOS 10.3-10.14 GNU , Linux , Haiku , macOS 10.3-10.14 GPL sim CLI baseada em texto Não sim Sim ( printf embutido) sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Sim ( / etc / profile , .bash_profile , .bash_login , .profile , .bashrc ) Sim (recurso Unix) sim sim
csh POSIX csh 1978 sim SunOS ? BSD sim CLI baseada em texto Não Não ? sim Sim ( stdin , stdout , stdout + stderr ) Sim (por meio de variáveis ​​e opções) Sim ( ~ / .cshrc , ~ / .login , ~ / .logout ) Sim (recurso Unix) sim sim
tcsh POSIX tcsh, csh 1983 sim FreeBSD (padrão para root), antigo Mac OS X ? BSD sim CLI baseada em texto Não sim ? sim Sim ( stdin , stdout , stdout + stderr ) Sim (por meio de variáveis ​​e opções) Sim ( /etc/csh.cshrc , /etc/csh.login , ~ / .tcshrc , ~ / .cshrc , ~ / .history , ~ / .login , ~ / .cshdirs ) Sim (recurso Unix) sim sim
Shell Hamilton C Win32 , OS / 2 csh 1988 Sim (a versão OS / 2 não é mais mantida) Opcional Opcional Proprietário Não CLI baseada em texto Não Não Sim (operador -t timestamp) sim Sim ( stdin , stdout , stdout + stderr ) Sim (por meio de variáveis ​​e opções) Sim (via login.csh, startup.csh e logout.csh) Sim (opção de linha de comando) sim sim
Scsh POSIX scsh 1994 sim ? ? Estilo BSD sim ? ? ? ? ? sim ? ? ? ? sim
ksh (ksh93t +) POSIX ksh 1983 sim AIX , HP-UX OpenSolaris Licença Pública Comum sim CLI baseada em texto Não sim Sim ( printf embutido com % (% F) T ) sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Sim (sistema e perfil de usuário e kshrc ) Sim (recurso Unix) sim sim
pdksh POSIX ksh, sh 1989? sim OpenBSD OpenBSD Domínio público sim CLI baseada em texto Não Não N / D sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Sim ( / etc / profile , .profile ) Sim (recurso Unix) sim sim
zsh POSIX zsh 1990 sim Deepin , GoboLinux , Grml , macOS 10.15+ Grml , macOS 10.15+ Estilo MIT sim CLI baseada em texto via código adicional sim Sim (vários recursos internos envolvendo a data, usando o formato % F strftime e a opção -i para o fc integrado) sim Sim ( fds arbitrário ) Sim (por meio de variáveis, opções, funções, estilos, etc.) Sim (sistema e usuário zshenv , zprofile , zshrc , zlogin , zlogout ) Sim (recurso Unix) sim sim
cinza POSIX sh 1989 sim Sistemas baseados em Minix , BusyBox Sistemas baseados em NetBSD , Minix , BusyBox Estilo BSD sim CLI baseada em texto Não Parcial (para BusyBox, compatível com edição de linha de comando, mas não com manipulação de strings) N / D sim Sim ( fds arbitrário ) Sim (por meio de variáveis ​​e opções) Sim ( / etc / profile , .profile ) Sim (recurso Unix) sim sim
PCC CP / M , MP / M (CCP) 1976 (1974) Não CP / M (sem login), MP / M CP / M , MP / M Freeware (originalmente proprietário) Sim (código originalmente fechado) CLI baseada em texto Não Não Não Não Não Não Sim (automático via $$$. SUB ) Parcial (apenas através do comando SUBMIT externo para atualizar $$$. SUB ) Não sim
COMMAND.COM DOS COMANDO 1980 Não (implementações de terceiros, não vinculadas a um fornecedor ou versão específica do DOS, disponível) DOS , Windows 95 , 98 , SE , ME DOS , Windows 95 , 98 , SE , ME específico do fornecedor, por exemplo, MS - EULA ou BSD / GPL (clones livres) Não (exceto para OpenDOS, DR-DOS, PTS / DOS e FreeDOS) CLI baseada em texto Não Não Não (exceto para DR-DOS) Sim (via COMANDO con: ou CTTY con: ) Sim ( stdin , stdout ) Sim (por meio de parâmetros de inicialização e variáveis ​​de ambiente, o DR-DOS também oferece suporte ao comando de alternância padrão do usuário DIR / C / R ) Sim (automático \ AUTOEXEC.BAT para shell primário ou explicitamente via / P , /P:filename.bat ou opções de inicialização / K ) Sim (via comando CALL ou opções de inicialização / C e / K ) Não sim
OS / 2 CMD.EXE OS / 2 , eComStation , ArcaOS CMD 1987 Não OS / 2 , eComStation , ArcaOS OS / 2 , eComStation , ArcaOS IBM - EULA Não CLI baseada em texto Não Não Não Não Sim ( stdin , stdout , stderr ) ? Parcial (apenas via opção de inicialização / K ) Sim (via comando CALL ou opções de inicialização / C e / K ) Não sim
Windows CMD.EXE Win32 CMD 1993 Não Windows NT, 2000, XP, Server 2003, Vista Windows NT, 2000, XP, Server 2003, Vista MS - EULA Não CLI baseada em texto Não Parcial ( CHCP 65001 para UTF-8 , mas os argumentos do programa ainda estão codificados na página de código local) Não Não sim Sim (via registro, parâmetros de inicialização e variáveis ​​de ambiente) Sim (automático via registro ou explicitamente via opção de inicialização / K ) Sim (via comando CALL ou opções de inicialização / C e / K ) Não sim
4DOS , NDOS DOS , Windows 95 , 98 , SE , ME 4DOS , NDOS 1989 (1986) Não (não vinculado a um fornecedor ou versão de sistema operacional específico) Opcional Opcional Licença MIT , com restrições sim CLI baseada em texto com extensões TUI Sim (pop-ups, sistema de ajuda, variável interna % _MOUSE , comando INKEY / M ) Não sim Sim (via CTTY con:, exceto para DRAWBOX , DRAWLINE , DRAWVLINE , LIST , SCREEN , SCRPUT , SELECT , VSCRPUT comandos e coloração de arquivo / diretório) Sim ( stdin , stdout , stderr , stdout + stderr ) Sim (via 4DOS.INI / NDOS.INI arquivo, parâmetros de inicialização, variáveis de ambiente, SETDOS de comando) Sim (automático \ AUTOEXEC.BAT para o shell primário e 4START.BTM / 4START.BAT , bem como 4EXIT.BTM / 4EXIT.BAT para qualquer shell, ou explicitamente via / P , /P:dir\nomedoarquivo.ext ou inicialização de / K opções) Sim (via comando CALL ou opções de inicialização / C e / K ) sim sim
4OS2 OS / 2 , eComStation , ArcaOS 4OS2 1992 Não (não vinculado a versões específicas do OS / 2) Opcional (mas empacotado com ArcaOS) Opcional freeware sim CLI baseada em texto Não Não Não Não Sim ( stdin , stdout , stderr , stdout + stderr ) Sim (via arquivo 4OS2.INI , parâmetros de inicialização, variáveis ​​de ambiente, comando SETDOS ) Sim (automático via 4START.CMD / 4START.BTM , bem como 4EXIT.CMD / 4EXIT.BTM arquivos, ou explicitamente via / K STARTUP.CMD opção) Sim (via comando CALL ou opções de inicialização / C e / K ) sim ?
TCC (anteriormente 4NT) Win32 TCC 1993 Não (não vinculado a versões específicas do NT) opcional opcional Shareware Não CLI baseada em texto ( Take Command : GUI ) Sim (mouse do console, pop-ups, sistema de ajuda, % _XMOUSE , % _YMOUSE variáveis ​​internas, comando INKEY / M ) sim sim Não Sim ( stdin , stdout , stderr , stdout + stderr ) Sim (via Registro, TCMD.INI / 4NT.INI arquivo, parâmetros de inicialização, variáveis de ambiente, SETDOS de comando) Sim (automático via registro e TCSTART / 4START , bem como TCEXIT / 4EXIT , ou explicitamente via opção de inicialização / K ) Sim (via comando CALL ou opções de inicialização / C e / K ) sim Não
VMS DCL OpenVMS Automaticamente para login / processo interativo 1977? sim VMS VMS Proprietário, empacotado em VMS por licença especial apenas CLI baseada em texto com DECwindows / Motif sim Sim, pelo menos para o padrão de 1988 sim Sim ( sys $ input , sys $ output atribuição) Sim (por meio de símbolos, nomes lógicos e opções) Sim (SYS $ MANAGER: SYLOGIN.COM e LOGIN.COM definido pelo usuário) sim sim Não
PowerShell .NET ,
.NET Framework
PowerShell 2006 sim Windows 10, 8, Server 2008, 7 Windows 10, 8, Server 2008, 7 Estilo MIT sim CLI gráfica sim sim sim Não sim Sim (por meio de variáveis ​​e opções) Sim (% USERPROFILE% \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1) Sim (recurso PowerShell) sim Não
rc Plano 9 , POSIX rc 1989 sim Plano 9 , Versão 10 Unix Plano 9 , Versão 10 Unix Licença MIT ? ? ? sim ? ? sim ? ? ? ? sim
BeanShell Java ? 2005 sim ? ? LGPL ? ? ? sim ? ? sim ? ? ? ? Não
peixe POSIX peixe 2005 sim GhostBSD ? GPL sim CLI baseada em texto ? sim ? ? Sim ( fds arbitrário ) Sim (por meio de variáveis ​​de ambiente e via interface da web por meio de fish_config ) Sim ( /etc/fish/config.fish e ~ / .config / fish / config.fish ) Sim (recurso Unix) Sim ( ~ / .config / fish / fish_history * ) ?
Íon Redox , Linux íon 2015 sim Redox Redox MIT sim CLI baseada em texto ? sim sim ? Sim ( fds arbitrário ) Sim (segue as especificações do diretório base XDG) Sim ( ~ / .config / ion / initrc ) sim Sim ( ~ / .local / share / íon / histórico ) Parcial (não distribuído como um executável autônomo, mas pode ser construído como um)
Concha Ambiente usual Normalmente invocado Introduzido Plataforma independente Shell de login padrão em Shell de script padrão em Licença Disponibilidade do código fonte Interface de usuário Suporte para mouse Suporte Unicode Suporte ISO 8601 Redirecionamento de console Redirecionamento de fluxo Configurabilidade Scripts de inicialização / desligamento Scripts de lote Exploração madeireira disponível como executável de arquivo único independente estaticamente vinculado

Recursos interativos

Concha Completar
nome de comando

Conclusão do caminho
Conclusão de
argumento de comando
Wildcard
conclusão

Histórico de comando
Prompt de
argumento obrigatório

Sugestões automáticas
Listagens coloridas do
diretório

Destaque de texto

Destaque de sintaxe
Histórico do diretório, pilha ou recursos semelhantes Mudança de
diretório implícita
Auto correção
Ambiente integrado
Trechos
Prompt de valor
Menu /
prompt de opções

Indicador de progresso
Ajuda
sensível ao contexto

Construtor de comandos
Concha de Thompson Não Não Não Não Não Não Não ? ? Não Não Não Não Não Não Não Não Não Não Não
Bourne shell versão 1977 Não Não Não Não Não Não Não ? ? Não Não Não Não Não Não sim Não Externo Não Não
Versão atual do Bourne shell Não sim Não Não sim Não Não sim sim Não Sim (CDPATH, pushd, popd, dirs), CDPATH desde SVr4 Não Não Não Não sim Não Externo Não Não
Shell POSIX Não Não Não Não sim Não Não sim sim Não Sim ( CDPATH ) Não Não Não Não sim Não Externo Não Não
bash (v4.0) sim sim quando definido sim sim Não Não sim sim Não Sim ( CDPATH , pushd , popd ) opcional Não Não Não sim sim Externo Não Não
csh sim sim Não Não sim Não Não sim sim Não Sim ( cdpath , pushd , popd ) opcional Não Não Não sim Não Externo Não Não
tcsh sim sim quando definido Não sim Não Não sim sim Não Sim ( cdpath , pushd , popd ) opcional sim Não Não sim Não Externo Não Não
Shell Hamilton C sim sim Não sim sim Não Não ? ? Não Sim ( cdpath , pushd , popd ) Não Não Não Não sim Não Externo Não Não
Scsh Não Não Não Não Não Não Não ? ? Não Não Não Não Não Não sim Não Externo Não Não
ksh (ksh93t +) Sim (extensível) Sim (extensível) Não Não sim Não Não sim sim Não Sim ( cdpath embutido, pushd , popd implementado como funções) Não Não Não Não sim sim Externo Não Não
pdksh sim sim Não Não sim Não Não sim sim Não Não Não Não Não Não sim sim Externo Não Não
zsh sim sim quando definido sim sim sim Sim (via previsão ou definido pelo usuário) sim sim Extensão de terceiros sim opcional sim Não quando definido (como widgets ZLE) sim sim Externo sim Não
cinza Não Não Não Não sim Não Não sim sim Não Não Não Não Não Não sim sim Externo Não Não
PCC Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não
COMMAND.COM Não Não Não Não Não Não Não Não Não (apenas no DR-DOS por meio de % $ ON% , % $ OFF% , % $ HEADER% , % $ FOOTER% ) Não Não Não Não Não (apenas passo único com COMMAND / Y) Não Não Não (apenas via comando CHOICE externo , no DR-DOS também via comandos internos SWITCH  / DRSWITCH ) Não Não Não
OS / 2
CMD.EXE
sim sim Não Não sim Não Não Não Não Não Não Não Não Não Não Não Não Não Não Não
Windows
CMD.EXE
parcial parcial Não Não Sim ( F8 ) Não Não Não Não Não Sim ( PUSHD , POPD ) Não Não Não Não Sim (via comando SET / P ) Não Não Não Não
4DOS sim sim sim sim sim Não Não sim Não Não (via pop-up, pesquisas de diretório estendidas, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - comandos e função % @ DIRSTACK [] ) sim Não sim Não Sim (via comandos INPUT , INKEY e ESET ) Sim (por meio da função @SELECT [] e indiretamente por meio de uma combinação dos comandos INKEY , INPUT , SWITCH ) Não sim Não (exceto para o comando OPTION para diretivas de arquivo INI)
4OS2 ? ? ? ? sim Não Não sim Não Não sim sim Não ? Não ? ? Não sim Não
TCC (anteriormente 4NT) sim sim sim sim sim Não Não sim Não sim (via pop-up, pesquisas de diretório estendidas, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - comandos e função % @ DIRSTACK [] ) sim Não sim Não Sim (via comandos INPUT , INKEY , ESET e SET / P ) Sim (por meio da função @SELECT [] e indiretamente por meio de uma combinação dos comandos INKEY , INPUT , SWITCH ) Não sim Não
PowerShell sim sim sim sim Sim ( F8 ) sim Sim, no ISE ? ? Sim, no módulo ISE e PSReadLine (incluído na v5.0) Sim; várias pilhas; vários tipos de localização Não Sim, no módulo PSReadLine Sim, no ISE Sim, no ISE sim sim sim Sim, no ISE janela de pop-up
rc sim sim Não Não sim Não Não ? ? Não Não Não Não Não Não ? Não Não Não Não
BeanShell sim sim Não Não Não Não Não ? ? Não Não Não Não Não Não Não Não Não Não Não
VMS DCL Esquema de exclusividade mínima Não Não Não sim sim Não ? ? Não Não Não Não Não Não sim Não Não Não Não
peixe sim sim quando definido ou analisável nas páginas do manual sim sim Não sim sim Sim (auxiliar integrado disponível) sim sim sim sim sim Sim, usando o comando abbr sim (via comando fish_config ) Não Não Não
Concha Completar
nome de comando

Conclusão do caminho
Conclusão de
argumento de comando
Wildcard
conclusão

Histórico de comando
Prompt de
argumento obrigatório

Sugestões automáticas
Listagens coloridas do
diretório

Destaque de texto

Destaque de sintaxe
Histórico do diretório, pilha ou recursos semelhantes Mudança de
diretório implícita
Auto correção
Ambiente integrado
Trechos
Prompt de valor
Menu /
prompt de opções

Indicador de progresso
Ajuda
sensível ao contexto

Construtor de comandos

Execução em segundo plano

A execução em segundo plano permite que um shell execute um comando em segundo plano. Os shells POSIX e outros shells Unix permitem a execução em segundo plano usando o caractere & no final do comando e, no PowerShell, você pode usar os comandos Start-Processou Start-Job.

Completações

Conclusão da linha de comando no Bash .

Os recursos de completação auxiliam o usuário a digitar comandos na linha de comando, procurando e sugerindo palavras correspondentes para palavras incompletas. A conclusão é geralmente solicitada pressionando a tecla de conclusão (geralmente a Tab ↹tecla).

A conclusão do nome do comando é a conclusão do nome de um comando. Na maioria dos shells, um comando pode ser um programa no caminho do comando (geralmente $PATH), um comando embutido, uma função ou apelido.

A conclusão do caminho é a conclusão do caminho para um arquivo, relativo ou absoluto.

O preenchimento curinga é uma generalização do preenchimento do caminho, em que uma expressão corresponde a qualquer número de arquivos, usando qualquer sintaxe compatível para correspondência de arquivo .

A conclusão de variável é a conclusão do nome de um nome de variável ( variável de ambiente ou variável de shell). Bash, zsh e fish completam todos os nomes de variáveis. O PowerShell tem conclusões para nomes de variáveis ​​de ambiente, nomes de variáveis ​​de shell e - de dentro de funções definidas pelo usuário - nomes de parâmetros.

A conclusão do argumento do comando é a conclusão dos argumentos de um comando específico. Existem dois tipos de argumentos, nomeados e posicionais: Os argumentos nomeados, geralmente chamados de opções , são identificados por seu nome ou letra que precede um valor, enquanto os argumentos posicionais consistem apenas no valor. Alguns shells permitem completar nomes de argumentos, mas poucos suportam completar valores.

Bash, zsh e fish oferecem a conclusão do nome do parâmetro por meio de uma definição externa ao comando, distribuída em um arquivo de definição de conclusão separado. Para conclusões de nome / valor de parâmetro de comando, esses shells assumem a conclusão do caminho / nome do arquivo se nenhuma conclusão for definida para o comando. A conclusão pode ser configurada para sugerir conclusões chamando uma função shell. O fish shell adicionalmente suporta a análise de páginas de manual para extrair informações de parâmetros que podem ser usadas para melhorar conclusões / sugestões. No PowerShell, todos os tipos de comandos (cmdlets, funções, arquivos de script) expõem de forma inerente dados sobre os nomes, tipos e intervalos / listas de valores válidos para cada argumento. Esses metadados são usados ​​pelo PowerShell para suportar automaticamente o nome do argumento e a conclusão do valor para comandos / funções integrados, comandos / funções definidos pelo usuário, bem como para arquivos de script. Os cmdlets individuais também podem definir a conclusão dinâmica de valores de argumento, em que os valores de conclusão são calculados dinamicamente no sistema em execução.

Histórico de comando

Um usuário de um shell pode descobrir que está digitando algo semelhante ao que o usuário digitou antes. Se o shell suportar o histórico de comandos, o usuário pode chamar o comando anterior no editor de linha e editá-lo antes de emiti-lo novamente.

Os shells que suportam a conclusão também podem ser capazes de concluir diretamente o comando do histórico de comandos, dada uma parte parcial / inicial do comando anterior.

A maioria dos shells modernos suporta histórico de comando. Os shells que suportam o histórico de comandos em geral também suportam a conclusão do histórico em vez de apenas recuperar comandos do histórico. Além do texto de comando simples, o PowerShell também registra a hora de início e término da execução e o status da execução no histórico do comando.

Solicitação de argumento obrigatória

Argumentos / parâmetros obrigatórios são argumentos / parâmetros aos quais deve ser atribuído um valor ao invocar o comando, função ou arquivo de script. Um shell que pode determinar antes da chamada que existem valores obrigatórios ausentes pode ajudar o usuário interativo solicitando esses valores em vez de deixar o comando falhar. Ter o prompt do shell para valores ausentes permitirá que o autor de um script, comando ou função marque um parâmetro como obrigatório em vez de criar o código do script para solicitar os valores ausentes (após determinar que está sendo executado interativamente) ou falhar com um mensagem.

O PowerShell permite que comandos, funções e scripts definam argumentos / parâmetros como obrigatórios . O shell determina, antes da invocação, se há algum argumento / parâmetro obrigatório que não foi vinculado e, então, solicitará ao usuário o (s) valor (es) antes da invocação real.

Sugestões automáticas

Conclusão da linha de comando no PowerShell .

Os shells com sugestões automáticas exibem complementos de linha de comando opcionais conforme o usuário digita. O PowerShell e as cascas de peixe oferecem suporte nativo a esse recurso; pressionar a Tab ↹tecla insere a conclusão.

As implementações desse recurso podem diferir entre os shells; por exemplo, PowerShell e zsh usam um módulo externo para fornecer conclusões, e fish deriva suas conclusões do histórico de comandos do usuário.

Histórico do diretório, pilha ou recursos semelhantes

Os shells podem registrar um histórico de diretórios nos quais o usuário esteve e permitir a mudança rápida para qualquer local registrado. Isso é conhecido como "pilha de diretório". O conceito foi realizado já em 1978, no lançamento do C shell (csh).

O PowerShell permite que várias pilhas nomeadas sejam usadas. Os locais (diretórios) podem ser inseridos / retirados da pilha atual ou de uma pilha nomeada. Qualquer pilha pode se tornar a pilha atual (padrão). Ao contrário da maioria dos outros shells, o conceito de localização do PowerShell permite que as pilhas de localização mantenham as localizações do sistema de arquivos, bem como outros tipos de localização, como unidades / grupos organizacionais do Active Directory , bancos de dados / tabelas / objetos do SQL Server , aplicativos / sites / diretórios virtuais do Internet Information Server .

Os interpretadores de linha de comando 4DOS e seu sucessor gráfico Take Command Console também apresentam uma pilha de diretórios.

Mudança de diretório implícita

Um nome de diretório pode ser usado diretamente como um comando que altera implicitamente a localização atual do diretório.

Isso deve ser diferenciado de um recurso de unidade de carga não relacionado suportado por DOS Concorrente , DOS Multiusuário , System Manager e REAL / 32 , onde a letra da unidade L: será implicitamente atualizada para apontar para o caminho de carregamento de um aplicativo carregado, permitindo assim que os aplicativos referem-se a arquivos que residem em seu diretório de carregamento em uma letra de unidade padronizada, em vez de em um caminho absoluto.

Auto correção

Quando uma linha de comando não corresponde a um comando ou argumentos diretamente, a verificação ortográfica pode corrigir automaticamente erros comuns de digitação (como distinção entre maiúsculas e minúsculas , letras ausentes). Existem duas abordagens para isso; o shell pode sugerir correções prováveis ​​na invocação do comando ou isso pode acontecer antes como parte de uma conclusão ou auto-sugestão.

Os shells tcsh e zsh apresentam verificação / correção ortográfica opcional, na chamada do comando.

Fish faz a autocorreção após a conclusão e a auto-sugestão. O recurso, portanto, não atrapalha ao digitar o comando inteiro e pressionar enter, enquanto o uso extensivo da guia e das teclas de seta para a direita torna o shell insensível a maiúsculas e minúsculas.

O módulo PSReadLine PowerShell (que é fornecido com a versão 5.0) oferece a opção de especificar um CommandValidationHandler ScriptBlock que é executado antes de enviar o comando. Isso permite a correção personalizada de comandos comumente digitados incorretamente e a verificação antes de realmente executar o comando.

Indicador de progresso

Um script de shell (ou trabalho) pode relatar o progresso de tarefas de longa execução para o usuário interativo.

Os sistemas Unix / Linux podem oferecer suporte a outras ferramentas usando indicadores de progresso de scripts ou como comandos independentes, como o programa "pv". Esses não são recursos integrados dos shells, no entanto.

O PowerShell tem um comando interno e funções de API (para serem usados ​​ao criar comandos) para escrever / atualizar uma barra de progresso. As mensagens da barra de progresso são enviadas separadamente da saída de comando regular e a barra de progresso é sempre exibida no console de usuário interativo final, independentemente de as mensagens de progresso serem originadas de um script interativo, de um trabalho em segundo plano ou de uma sessão remota.

Mesa interativa

A saída de uma execução de comando pode ser exibida em uma tabela / grade que pode ser classificada e filtrada interativamente e / ou de outra forma manipulada após o término da execução do comando.

O cmdlet PowerShell Out-GridView exibe dados em uma janela interativa com classificação e filtragem interativas.

Listagens coloridas do diretório

Os processadores de linha de comando do JP Software fornecem colorização configurável pelo usuário de nomes de arquivos e diretórios em listagens de diretórios com base em sua extensão de arquivo e / ou atributos por meio de uma variável de ambiente% COLORDIR% definida opcionalmente.

Para os shells Unix / Linux, este é um recurso do comando ls e do terminal.

Destaque de texto

Os processadores de linha de comando no DOS Plus , Multiusuário DOS , REAL / 32 e em todas as versões do DR-DOS suportam uma série de variáveis ​​de ambiente opcionais para definir sequências de escape, permitindo controlar o realce, reversão ou colorização do texto para fins de exibição ou impressão em comandos como TYPE . Todos os processadores de linha de comando mencionados suportam % $ ON% e % $ OFF% . Se definidas, essas sequências serão emitidas antes e depois dos nomes dos arquivos. Uma seqüência típica para% $ ON% seria \ 033 [1m em conjunto com ANSI.SYS , \ 033p para um terminal ASCII ou \ 016 para uma impressora IBM ou ESC / P. Da mesma forma, as sequências típicas para% $ OFF% seriam \ 033 [0m, \ 033q, \ 024, respectivamente. As variáveis % $ HEADER% e % $ FOOTER% são suportadas apenas por COMMAND.COM no DR-DOS 7.02 e superior para definir sequências emitidas antes e depois dos blocos de texto para controlar o destaque do texto, paginação ou outras opções de formatação.

Para os shells Unix / Linux, este é um recurso do terminal.

Realce de sintaxe

Um projeto independente oferece destaque de sintaxe como um complemento para o Z Shell (zsh). No entanto, isso não faz parte do shell.

O PowerShell fornece destaque de sintaxe personalizável na linha de comando por meio do módulo PSReadLine. Este módulo pode ser usado com o PowerShell v3.0 + e está incluído na v5.0. Além disso, ele é carregado por padrão no host de linha de comando "powershell.exe" na v5.0. O PowerShell ISE também inclui destaque de sintaxe na linha de comando, bem como no painel de script. Take Command Console (TCC) oferece destaque de sintaxe no ambiente integrado.

Ajuda sensível ao contexto

4DOS, 4OS2, 4NT / Take Command Console e PowerShell (no PowerShell ISE) procura informações de ajuda contextuais quando F1é pressionado.

Zsh fornece várias formas de ajuda contextual configurável como parte de seu widget run-help , comando _complete_help ou na conclusão de opções para alguns comandos.

Construtor de comandos

Um construtor de comandos é um diálogo guiado que auxilia o usuário no preenchimento de um comando. O PowerShell tem um construtor de comando que está disponível no PowerShell ISE ou que pode ser exibido separadamente por meio do cmdlet Show-Command .

Recursos de programação

Concha Funções Manipulação de exceção Pesquisar e substituir em substituições de variáveis Aritmética Ponto flutuante Biblioteca de funções matemáticas Matrizes ou listas lineares Matrizes associativas Funções lambda função eval Geração de número pseudoaleatório Bytecode
Bourne shell versão 1977 Não Sim (via armadilha ) Não Não Não Não Não Não Não sim Não Não
Versão atual do Bourne shell Sim desde SVR2 Sim (via armadilha ) Não sim Não Não Não Não Não sim Não Não
Shell POSIX sim Sim (via armadilha ) Não sim Não Não Não Não Não sim Não Não
bash (v4.0) sim Sim (via armadilha ) Sim (por meio da sintaxe $ {// }) sim Não Não sim sim Não sim Sim ( $ RANDOM ) Não
csh Não Não Sim (via sintaxe $ var: s /// ) sim Não Não sim Não Não sim Não Não
tcsh Não Não Sim (via sintaxe $ var: s /// ) sim Não Não sim Não Não sim Não Não
Shell Hamilton C sim Não Sim (via sintaxe $ var: s /// ) sim sim sim sim Não Não sim Sim (utilidade aleatória) Não
Scsh sim ? Sim (por meio de funções de string e expressões regulares) ? ? ? sim ? sim sim Sim (número inteiro aleatório, real aleatório) Sim (o compilador é a máquina virtual Scheme48, via scshvm )
ksh (ksh93t +) sim Sim (via armadilha ) Sim (via sintaxe $ {// } e comandos internos) sim sim sim sim sim Não sim Sim ( $ RANDOM ) Sim (o compilador é chamado de shcomp )
pdksh sim Sim (via armadilha ) Não sim Não Não sim Não Não sim Sim ( $ RANDOM ) Não
zsh sim sim Sim (por meio da sintaxe $ {: s // } e $ {// }) sim sim Sim ( módulo zsh / mathfunc ) sim sim Não sim Sim ( $ RANDOM ) Sim ( comando zcompile integrado )
cinza sim Sim (via armadilha ) Não Sim (desde 1992) Não Não Não Não Não sim Não Não
PCC Não ? Não Não ? ? Não Não Não Não Não Não
COMMAND.COM Não Parcial (somente falha automática (via COMMAND / F (ou / N em algumas versões do DR-DOS)) Não Não Não Não Não Não Não Não Não Não
OS / 2 CMD.EXE Não Não Não ? Não Não ? Não Não Não Não Não
Windows CMD.EXE Sim (via CALL: rótulo ) Não Sim (via SET% varname : sintaxe de expressão ) Sim (via SET / A ) Não Não Sim (via SET ) Não Não Não Sim ( % random% ) Não
4DOS sim Sim (via comando ON , falha automática opcional via 4DOS / F ) Sim (via função % @ Replace ) Sim (via SET / A ) ? ? Sim (por meio de intervalos, incluir listas, @ listas de arquivos e comando FOR ) Não Não sim Sim (função % @ Random [...] ) Sim (via comando BATCOMP )
4OS2 ? ? ? ? ? ? ? ? Não sim Sim (função % @ Random [...] ) ?
TCC (anteriormente 4NT) sim Sim (via ON e vários comandos ... MONITOR ) Sim (via função % @ Replace ) Sim (via SET / A ) ? ? Sim (por meio de intervalos, incluir listas, @ listas de arquivos e comando FOR ) ? Não sim Sim (função % @ Random [...] ) Sim (via comando BATCOMP )
PowerShell sim Sim (Tente-Catch-Finalmente) Sim ( -substituir operador) sim sim [Aula de matemática sim sim sim sim sim Sim automático
rc sim sim Não ? ? ? sim ? Não sim Não Não
BeanShell sim sim ? sim ? ? sim sim Não sim sim sim
VMS DCL sim sim Não sim Não sim, para programas compilados sim Não Não Não Não Não
peixe sim Sim (via armadilha ) Sim, por meio do comando embutido de string sim sim sim sim Não Não sim Sim ( aleatório ) Não

Processamento de string e correspondência de nome de arquivo

Concha Processamento de string Alternação ( expansão da cinta ) Correspondência de padrões ( expressões regulares integradas) Correspondência de padrões ( globbing de nome de arquivo ) Qualificadores de globbing (geração de nome de arquivo com base em atributos de arquivo) Globbing recursivo (gerando arquivos de qualquer nível de subdiretórios)
Bourne shell versão 1977 ? Não Não Sim ( * , ? , [...] ) Não Não
Versão recente do Bourne Shell Parcial (remoção de prefixo e sufixo na expansão variável) Não Não Sim ( * , ? , [...] ) Não Não
Shell POSIX Parcial (remoção de prefixo e sufixo na expansão variável) Não Não Sim ( * , ? , [...] ) Não Não
bash (v4.0) Parcial (remoção de prefixo e sufixo na expansão variável) sim sim Sim ( * , ? , [...] , {... }) Não Sim ( ** / ... )
csh Sim (: se outros operadores de edição) sim Não sim Não Não
tcsh Sim (: se outros operadores de edição) sim sim sim Não Não
Shell Hamilton C Sim (: se outros operadores de edição + substr, strlen, strindex, printf, reverse, upper, lower, concat e outras funções embutidas) sim Não sim Não Sim (via diretório indefinido "..." curinga)
Scsh ? ? sim sim Não Não
ksh (ksh93t +) Parcial (prefixo, remoção de sufixo e substituição de string na expansão variável) sim sim Sim ( * , ? , [...] ) Não Sim (com set -G , sem seguir links simbólicos)
pdksh ? sim Não sim Não Não
zsh Sim (por meio de processamento de variável: por exemplo, extração de substring, várias transformações por meio de expansão de parâmetro) sim sim Sim ( * , ? , [...] , globbing estendido ) sim Sim ( ** / ... ou *** / ... para seguir os links simbólicos)
cinza ? ? Não sim Não Não
PCC Não Não Não Não Não Não
COMMAND.COM Não Não Não Sim ( * , ? ) Não Não
OS / 2 CMD.EXE Não Não Não Sim ( * , ? ) Parcial (apenas no comando DIR / A: ... ) Não
Windows CMD.EXE Parcial (apenas através de FOR / F e SET / A ) Não Não Sim ( * , ? ) Parcial (apenas no comando DIR / A: ... ) Sim (via comando FOR / R ou, quando disponível, indiretamente via opção de subdiretório / S )
4DOS Sim (por meio de funções variáveis % @ ... [] , processamento de variável de ambiente estendido, vários comandos de string e FOR / F e SET / A ) Não Não Sim ( * , ? , [...] , curingas estendidos , comando pop-up SELECT ) Sim (via / A: ... atributo e / I "..." opções de descrição e / [S ...] tamanho, / [T ...] hora, / [D ...] data e / [! ...] intervalos de exclusão de arquivo) Sim (via comando FOR / R ou indiretamente via comando GLOBAL ou, quando disponível, opção de subdiretório / S )
4OS2 ? Não Não ? ? ?
TCC (anteriormente 4NT) Sim (por meio de funções variáveis % @ ... [] , processamento de variável de ambiente estendido, vários comandos de string e FOR / F e SET / A ) Não sim Sim ( * , ? , [...] , curingas estendidos , comando pop-up SELECT ) Sim (via / A: ... atributo e / I "..." opções de descrição e / [S ...] tamanho, / [T ...] hora, / [D ...] data, / [ O ...] proprietário e / [! ...] intervalos de exclusão de arquivo) Sim (via comando FOR / R ou indiretamente via comando GLOBAL ou, quando disponível, opção de subdiretório / S )
PowerShell Sim (Concat / Substring / Inserir / Remover / Substituir, ToLower / ToUpper, Trim / TrimStart / TrimEnd, Compare, Contains / StartsWith / EndWith, Format, IndexOf / LastIndexOf, Pad / PadLeft / PadRight, Split / Join, funções de expressão regular e outras funções de string .NET) Não Sim (suporte regex completo) Sim ( * , ? , [...] ) ? ?
rc ? ? Não sim Não Não
BeanShell ? ? sim ? ? ?
VMS DCL sim Não Não sim Não Sim (via [SUBDIR ...] )
peixe Sim (função de string embutida) sim sim (por meio de funções integradas de correspondência de string e substituição de string ) Sim ( * , ? , {... }) Não Sim ( ** / ... )

Comunicação entre processos

Concha Tubos Substituição de comando Substituição de processo Subshells Conexões TCP / UDP como fluxos Empilhamento de teclas
Bourne shell bytes simultâneos sim Não sim Não N / D
Shell POSIX bytes simultâneos sim Não sim Não N / D
bash (v4.0) bytes simultâneos sim Sim (se o sistema suportar / dev / fd / ⟨n⟩ ou pipes nomeados) sim Sim (apenas cliente) N / D
csh bytes simultâneos sim Não sim Não N / D
tcsh bytes simultâneos sim Não sim Não N / D
Shell Hamilton C bytes simultâneos sim Não sim Não ?
Scsh texto ? ? ? sim N / D
ksh (ksh93t +) bytes (pode conter objetos serializados se imprimir -C for usado) simultâneos Sim ( $ (...) e $ {<space> ...; }) Sim (se o sistema suportar / dev / fd / ⟨n⟩ ) sim Sim (e suporte SCTP, apenas cliente) N / D
pdksh bytes simultâneos sim Não sim Não N / D
zsh bytes simultâneos sim sim sim Sim (cliente e servidor, mas apenas TCP) N / D
cinza bytes simultâneos sim Não sim Não N / D
PCC Não Não Não Não Não Não
COMMAND.COM arquivos temporários de texto sequencial Não Não Parcial (somente sob multitarefa DR-DOS via COMMAND.COM / T ) Não Não
OS / 2 CMD.EXE texto simultâneo Não Não ? Não Não
Windows CMD.EXE texto simultâneo Sim (via comando FOR / F ) Não Sim (Backtick: ` em FOR / F usebackq ) Não Não
4DOS arquivos temporários de texto sequencial Sim (via comando FOR / F ) ? Parcial (via % @ EXECSTR [] e % @ EXEC [] , ou via SET / M , ESET / M e UNSET / M e % @ MASTER [...] ) Não Sim (via KEYSTACK e KSTACK )
4OS2 texto simultâneo ? ? ? Não Sim (via KEYSTACK )
TCC (anteriormente 4NT) texto simultâneo Sim (via comando FOR / F ) ? Parcial (via % @ EXECSTR [] e % @ EXEC [] ) Sim (via FTP , TFTP , FTPS , SFTP , HTTP , HTTPS e IFTP , apenas cliente) Sim (via KEYSTACK )
PowerShell objetos simultâneos sim Não sim sim ?
rc texto simultâneo sim Sim (via: <{cmd } se o sistema suportar / dev / fd / ⟨n⟩ ) sim Não ?
BeanShell não suportado ? ? ? sim ?
VMS DCL texto (via comando PIPE ) sim Não Sim (geração) Sim (somente TCP do servidor) Não
peixe bytes simultâneos Sim ( ... ) Não (quebrado) Não Não N / D

Empilhamento de teclas

Antecipando o que um determinado aplicativo em execução pode aceitar como entrada de teclado, o usuário do shell instrui o shell a gerar uma sequência de pressionamentos de tecla simulados , que o aplicativo interpretará como uma entrada de teclado de um usuário interativo. Ao enviar sequências de pressionamento de tecla, o usuário pode direcionar o aplicativo para executar ações que seriam impossíveis de realizar por meio do redirecionamento de entrada ou exigiriam um usuário interativo. Por exemplo, se um aplicativo atua em pressionamentos de tecla, que não podem ser redirecionados, distingue entre teclas normais e estendidas, esvazia a fila antes de aceitar uma nova entrada na inicialização ou sob certas condições, ou porque não lê nenhuma entrada padrão. O empilhamento de teclas pressionadas normalmente também fornece meios para controlar o tempo de envio de teclas simuladas ou para atrasar novas teclas até que a fila seja liberada etc. Também permite simular teclas que não estão presentes em um teclado (porque as teclas correspondentes não existem fisicamente ou porque um layout de teclado diferente está sendo usado) e, portanto, seria impossível digitar por um usuário.

Recursos de segurança

Concha Prompt de segurança (senha) Variáveis ​​/ parâmetros criptografados Senhas de arquivo / diretório Permissão de execução Bloqueio de script não confiável Subconjunto de shell restrito Subconjunto de dados seguros
Bourne shell via stty Não ? N / D Não sim Não
Shell POSIX via stty Não ? N / D Não Não Não
bash (v4.0) leia -s Não ? N / D Não sim Não
csh via stty Não ? N / D Não sim Não
tcsh via stty Não ? N / D Não sim Não
Shell Hamilton C Não Não Não Não Não Não Não
Scsh via stty Não ? N / D Não Não Não
ksh (ksh93t +) via stty Não ? N / D Não sim Não
pdksh via stty Não ? N / D Não sim Não
zsh leia -s Não ? N / D Não sim Não
cinza via stty Não ? N / D Não sim Não
PCC Não Não Não Não Não Não Não
COMMAND.COM Parcial (somente sob DR-DOS, solicita a senha se o arquivo / diretório estiver protegido) Não Parcial (somente no DR-DOS via \ dirname; dirpwd \ filename; sintaxe filepwd ) Parcial (somente sob DR-DOS, se os arquivos forem protegidos por senha para permissão de leitura e / ou execução) Não Não Não
OS / 2 CMD.EXE Não Não Não Não Não Não Não
Windows CMD.EXE Não Não Não Não Não Não Não
4DOS Sim (via INPUT / P ou INKEY / P ) Não Parcial (somente no DR-DOS via \ dirname ;; dirpwd \ filename ;; sintaxe filepwd ) Parcial (somente sob DR-DOS, se os arquivos forem protegidos por senha para permissão de leitura e / ou execução) Não Não Não
4OS2 ? Não Não Não Não Não Não
TCC (anteriormente 4NT) Sim (via INPUT / P , INKEY / P ou QUERYBOX / P ) Não Não Não Não Não Não
PowerShell sim sim Não Não sim sim sim
rc via stty Não ? N / D Não sim Não
BeanShell ? ? ? ? ? ? ?
VMS DCL sim Não Não sim Não sim Não
peixe leia -s Não ? N / D Não Sim (via fish -l ) ?

Prompt seguro

Alguns scripts de shell precisam consultar o usuário quanto a informações confidenciais, como senhas , chaves digitais privadas, códigos PIN ou outras informações confidenciais. A entrada sensível não deve ser ecoada de volta para a tela / dispositivo de entrada, onde poderia ser recolhida por pessoas não autorizadas. A representação da memória em texto simples de informações confidenciais também deve ser evitada, pois pode permitir que as informações sejam comprometidas, por exemplo, por meio de arquivos de troca, despejos de memória, etc.

Os shells bash, zsh e PowerShell oferecem isso como um recurso específico. Os shells que não oferecem isso como um recurso específico podem ainda ser capazes de desligar o eco por outros meios. Shells em execução em um sistema operacional Unix / Linux podem usar o comando stty externo para desligar / ligar o eco de caracteres de entrada. Além de não ecoar de volta os caracteres, a opção -AsSecureString do PowerShell também criptografa a entrada caractere por caractere durante o processo de entrada, garantindo que a string nunca seja representada sem criptografia na memória, onde poderia ser comprometida por meio de despejos de memória, varredura, transcrição etc. .

Variáveis ​​/ parâmetros criptografados

Se um script lê uma senha em uma variável de ambiente, ela está na memória em texto simples e, portanto, pode ser acessada por meio de um dump de memória. Também está no ambiente de processo, que pode ser acessível por outros processos iniciados pelo script.

O PowerShell pode trabalhar com variáveis ​​/ parâmetros de string criptografados. Variáveis ​​criptografadas garantem que os valores não sejam divulgados inadvertidamente por meio de, por exemplo, transcrições, eco, arquivos de log, memória ou despejos de memória ou mesmo varredura de memória maliciosa. O PowerShell também oferece suporte ao salvamento dessas strings criptografadas em arquivos de texto, protegidos por uma chave de propriedade do usuário atual.

Permissão de execução

Alguns sistemas operacionais definem uma permissão de execução que pode ser concedida a usuários / grupos para um arquivo.

Em sistemas Unix, a permissão de execução controla o acesso para invocar o arquivo como um programa e se aplica a executáveis ​​e scripts. Como a permissão é imposta no carregador do programa , nenhuma obrigação é necessária do programa invocador, nem do programa invocado, para impor a permissão de execução - isso também vale para shells e outros programas interpretadores. O comportamento é exigido pela biblioteca POSIX C que é usada para fazer a interface com o kernel. POSIX especifica que a execfamília de funções deve falhar com EACCESS (permissão negada) se o arquivo negar permissão de execução (consulte execve - Referência de interfaces do sistema, Especificação Única do UNIX , Edição 7 do Grupo Aberto ).

A permissão de execução só se aplica quando o script é executado diretamente. Se um script for chamado como um argumento para o shell de interpretação, ele será executado independentemente de o usuário possuir a permissão de execução para esse script.

Embora o Windows também especifique uma permissão de execução , nenhum dos shells específicos do Windows bloqueia a execução do script se a permissão não tiver sido concedida.

Bloqueio de script não confiável

Alguns shells bloquearão scripts considerados não confiáveis ​​ou se recusarão a executar scripts se exigido por um administrador de sistema.

Restrição de execução da origem do script

O PowerShell pode ser definido para bloquear a execução de scripts que foram marcados como obtidos de uma origem desconhecida / não confiável (por exemplo, a Internet). Os aplicativos voltados para a Internet, como navegadores da web, clientes de mensagens instantâneas, leitores de email, etc. marcam os arquivos baixados da Internet com a zona de origem em um fluxo de dados alternativo que é compreendido pelo PowerShell.

Restrição de script assinado

As políticas de assinatura de script / código podem ser usadas para garantir que um departamento de operações execute apenas scripts / códigos aprovados que foram revisados ​​e assinados por um revisor / aprovador confiável. Os regimes de assinatura também protegem contra adulteração. Se um script é enviado do fornecedor para um cliente, o cliente pode usar a assinatura para garantir que o script não foi adulterado durante o trânsito e que o script realmente se origina do fornecedor e não de um invasor tentando fazer um engenheiro social para um operador executar um script de ataque.

O PowerShell pode ser definido para permitir a execução de scripts bloqueados de outra forma (por exemplo, originados de uma zona não confiável) se o script foi assinado digitalmente usando um certificado digital confiável.

Políticas de execução multinível

Uma empresa pode querer impor restrições de execução globalmente dentro da empresa e / ou certas partes da empresa. Ele pode querer definir uma política para a execução de scripts assinados, mas permitir que certas partes da empresa definam suas próprias políticas para restrições zoneadas.

O PowerShell permite que políticas de bloqueio de script sejam aplicadas em vários níveis: máquina local, usuário atual, etc. Uma política de nível superior substitui uma política de nível inferior, por exemplo, se uma política for definida para a máquina local, ela estará em vigor para todos os usuários da máquina local , somente se for deixado indefinido no nível superior pode ser definido para os níveis inferiores.

Subconjunto de shell restrito

Vários shells podem ser iniciados ou configurados para iniciar em um modo em que apenas um conjunto limitado de comandos e ações está disponível para o usuário. Embora não seja um limite de segurança (o comando que acessa um recurso é bloqueado em vez do recurso), ele é normalmente usado para restringir as ações dos usuários antes de efetuar login.

Um modo restrito é parte da especificação POSIX para shells, e a maioria dos shells Linux / Unix suporta tal modo onde vários dos comandos embutidos são desabilitados e apenas comandos externos de um determinado diretório podem ser chamados.

O PowerShell oferece suporte a modos restritos por meio de arquivos de configuração de sessão ou configurações de sessão. Um arquivo de configuração de sessão pode definir cmdlets visíveis (disponíveis), aliases, funções, provedores de caminho e muito mais.

Subconjunto de dados seguros

Scripts que invocam outros scripts podem ser um risco de segurança, pois podem potencialmente executar código estrangeiro no contexto do usuário que iniciou o script inicial. Os scripts geralmente serão projetados para incluir exclusivamente scripts de locais seguros conhecidos; mas em alguns casos, por exemplo, ao oferecer ao usuário uma maneira de configurar o ambiente ou carregar mensagens localizadas, o script pode precisar incluir outros scripts / arquivos. Uma maneira de lidar com esse risco é o shell oferecer um subconjunto seguro de comandos que podem ser executados por um script incluído.

As seções de dados do PowerShell podem conter constantes e expressões usando um subconjunto restrito de operadores e comandos. As seções de dados do PowerShell são usadas quando, por exemplo, strings localizadas precisam ser lidas de uma fonte externa enquanto protege contra efeitos colaterais indesejados.

Notas

Referências

links externos