PowerShell vs. Bash: principais diferenças a serem conhecidas
Se você possui a familiaridade mais passageira com emuladores de terminal em computadores, provavelmente já ouviu falar do Bash do Linux e do PowerShell da Microsoft. Ambos são onipresentes na vida dos profissionais especializados em qualquer sistema operacional. No entanto, se você não está vivendo sua vida cotidiana na frente de um prompt de shell, provavelmente não pensou muito em como os dois seriam comparados. Nesse caso, nunca houve um momento melhor para aprender!
O que é PowerShell
A Microsoft introduziu o Powershell em 2006 para atuar como uma interface de linha de comando executada sobre uma estrutura de script versátil e poderosa. Ele foi projetado para ajudar os administradores do Windows a criar pequenos aplicativos que usam “commandlets” (conhecidos oficialmente como “cmdlets”) para automatizar grande parte de seu trabalho.
Mais importante ainda, sua estrutura de comando e “scriptability” representam uma reformulação completa do antigo MS-DOS sobre o qual o Windows foi originalmente construído. Ele tem uma sintaxe mais uniforme e uma maneira de apresentar informações fáceis de se acostumar e codificar.
Isso não pretende substituir a linha de comando do Windows que a maioria das pessoas está acostumada a executar, mas sim complementá-la com suas próprias funções de automação e configuração. Por exemplo, se estiver tentando gerenciar um serviço do Microsoft Azure na nuvem, agora você pode fazer isso com o Connect-AzAccount
comando em vez de usar uma sessão de área de trabalho remota.
Assim como o Bash, o PowerShell é totalmente auditável, permitindo o uso em ambientes muito sensíveis onde é fundamental saber tudo o que acontece dentro do sistema.
O que é Bash
Bash é o avô de 1989 que permanece relevante nos ambientes Linux, independentemente de todos os shells mais sofisticados que tentaram eclipsá-lo. Assim como o PowerShell, o Bash fornece uma estrutura com a qual escrever scripts para automatizar a administração com muito mais facilidade.
Como sua estrutura e sintaxe de comando são onipresentes entre várias distribuições do Linux, BSD e até mesmo macOS, muitos desenvolvedores se acostumaram a usar o Bash como seu objetivo para organizar seus projetos.
Embora o Bash contenha um conjunto básico de operações que permitem escrever scripts e retransmitir informações por meio do terminal, quase todos os comandos digitados em um terminal com esse shell são um programa separado. Por exemplo, o Bash não inclui os comandos ls
(listar arquivos) ou cat
(concatenar ou mostrar a saída de um arquivo), mas, em vez disso, procura executáveis com o mesmo nome em caminhos especificados.
Powershell vs Bash: Diferenças
O PowerShell e o Bash podem parecer semelhantes quando você aprende a usá-los, mas são animais completamente diferentes com filosofias de design que às vezes entram em conflito. Aqui estão algumas coisas muito cruciais que os diferenciam:
1. Controle de acesso do usuário
Se você quiser fazer algo administrativo com o Bash, tudo o que você precisa fazer é preceder seu comando com sudo . Depois que o comando é concluído, você é imediatamente levado de volta ao shell do usuário. A execução de um comando raiz deixa menos espaço para erros e força você a revisar o que está fazendo.
O PowerShell, por outro lado, só pode ser executado no modo administrativo ou de usuário. Se você quiser alternar entre eles, terá que abrir uma nova sessão. Para abrir o PowerShell no modo administrativo, você deve clicar com o botão direito do mouse no ícone do programa e clicar em “Executar como administrador”. Como alternativa, dentro de uma sessão de terminal, basta digitar Start-Process powershell -verb runAs
e abrirá uma segunda sessão com privilégios administrativos.
2. Saída
Quando você digita um comando no Bash, basicamente está executando um programa separado e esse executável fornecerá o resultado desejado. Como a saída é formatada depende de como o desenvolvedor desse programa em particular deseja que seja formatado.
Há muita flexibilidade aqui, o que é ótimo, mas a desvantagem é a falta de uniformidade.
A saída do comando no PowerShell normalmente é formatada em um único padrão unificado. O texto que você vê na tela é uma versão de dados legível por humanos que pode ser interpretada por outros programas.
Isso permite que as pessoas que escrevem scripts e aplicativos usem os próprios recursos e comandos do PowerShell para obter todas as informações de que precisam.
3. Sintaxe
O Bash usa uma sintaxe única (por exemplo, if [condition]; then code here; fi
) que normalmente não é vista em outras linguagens de script. Não é incrivelmente difícil de usar, mas pode ser um pouco incomum para alguém que está apenas começando a aprender a escrever scripts.
Quanto aos comandos do usuário, não há uniformidade clara. Cada programa vem com sua própria sintaxe de comando. Você precisa saber como usá-los antes de integrá-los ao seu script bash.
A sintaxe de script do PowerShell é semelhante a qualquer outra. NET (por exemplo, if (condition) {. ..code here... }
). Para pessoas acostumadas a desenvolver dentro do próprio ecossistema da Microsoft, quase não há curva de aprendizado envolvida.
Os comandos do usuário seguem uma estrutura rígida : um verbo, seguido de um traço, seguido de um substantivo. Por exemplo, Get-ChildItem
listará todos os arquivos no diretório atual. Os comandos que não são específicos do PowerShell ainda podem seguir uma estrutura semelhante ao Bash. Se você estiver usando no Linux, ainda poderá executar todos os comandos do Linux.
4: Flexibilidade
Se você dominar o Bash, saberá como operar com os ambientes de terminal de inúmeras distribuições Linux, o ecossistema BSD e até o macOS. É de longe o rei da universalidade. Embora o macOS tenha mudado para zsh em 2019, ele ainda tem o espírito Bash em sua essência.
O PowerShell é capaz de rodar em praticamente qualquer sistema operacional, mas destina-se principalmente a rodar junto com os próprios produtos da Microsoft. Se você o estiver usando, provavelmente o fará no Windows.
Se tudo o que você aprender forem as convenções específicas do PowerShell, você ficará preso em uma ilha com os produtos da Microsoft. Embora não precise ser assim, não há como escapar do fato de que a casca só brilha verdadeiramente nessa situação. No que diz respeito às desvantagens, no entanto, é uma que vem com uma enorme fatia da participação no mercado global de desktops.
perguntas frequentes
Posso executar o bash dentro do Windows e o PowerShell dentro do Linux?
Para executar o bash no Windows, basta instalar o Windows Subsystem for Linux executando um prompt de comando como administrador e digitando wsl --install
. Você terá acesso instantâneo aos comandos bash após o término da instalação.
O PowerShell dentro do Linux é um pouco mais complicado e dependente da distribuição. A Microsoft inclui instruções em seu site para instalar o PowerShell nas distros mais populares. Você pode notar que o Arch Linux está faltando nessa lista, mas existe como o powershell
pacote no AUR.
Preciso do Bash no Windows?
Não necessariamente, mas ajudará muito se você planeja usar algumas coisas que são projetadas mais para Linux (Python, Git, etc.). Tê-lo por perto não faria mal. Usar o Windows Subsystem para Linux para instalar o Bash também permite que você tenha um shell Linux completo para experimentar, o que é uma ótima maneira de se apresentar ao ambiente operacional se você não estiver familiarizado.
Os comandos DOS do Windows funcionam no PowerShell?
Eles geralmente fazem. O PowerShell não substitui o prompt de comando original do Windows. Em vez disso, é uma camada que funciona sobre ela para fornecer novas funcionalidades. Você provavelmente não perderá nada se apenas usar o PowerShell em vez do cmd.exe testado e comprovado.
Deixe um comentário