PowerShell vs. Bash: differenze chiave da conoscere
Se possiedi anche la minima familiarità con gli emulatori di terminale sui computer, probabilmente hai sentito parlare di Bash di Linux e PowerShell di Microsoft. Entrambi sono onnipresenti nella vita dei professionisti specializzati in entrambi i sistemi operativi. Tuttavia, se non stai vivendo la tua vita quotidiana davanti a un prompt della shell, probabilmente non hai pensato molto a come i due sarebbero confrontati. In tal caso, non c’è mai stato momento migliore per imparare!
Che cos’è PowerShell
Microsoft ha introdotto Powershell nel 2006 per fungere da interfaccia a riga di comando che funziona su un framework di script versatile e potente. È stato progettato per aiutare gli amministratori di Windows a creare piccole applicazioni che fanno uso di “commandlet” (noti ufficialmente come “cmdlet”) per automatizzare gran parte del loro lavoro.
Ancora più importante, la sua struttura di comando e la sua “scriptabilità” rappresentano una completa rielaborazione del vecchio MS-DOS su cui Windows era originariamente costruito. Ha una sintassi e un modo più uniformi di presentare le informazioni a cui è facile abituarsi e codificare.
Questo non ha lo scopo di sostituire la riga di comando di Windows che la maggior parte delle persone è abituata a eseguire, ma invece la integra con le proprie funzioni di automazione e configurazione. Ad esempio, se stai tentando di gestire un servizio Microsoft Azure sul cloud, ora puoi farlo con il Connect-AzAccount
comando invece di utilizzare una sessione desktop remoto.
Come Bash, PowerShell è completamente controllabile, consentendo l’utilizzo in ambienti molto sensibili in cui è fondamentale conoscere tutto ciò che accade all’interno del sistema.
Cos’è Bash
Bash è il nonno del 1989 che rimane rilevante negli ambienti Linux indipendentemente da tutte le shell più fantasiose che hanno tentato di eclissarlo. Proprio come PowerShell, Bash fornisce un framework con cui scrivere script per automatizzare l’amministrazione molto più facilmente.
Poiché la struttura dei comandi e la sintassi sono onnipresenti in varie distribuzioni Linux, BSD e persino macOS, molti sviluppatori si sono abituati a utilizzare Bash come punto di riferimento per organizzare i propri progetti.
Sebbene Bash contenga una suite base di operazioni che consentono di scrivere script e inoltrare informazioni tramite il terminale, quasi tutti i comandi digitati in un terminale con questa shell sono un programma separato. Ad esempio, Bash non include i comandi ls
(elenca file) o cat
(concatena o mostra l’output di un file), ma cerca invece gli eseguibili con lo stesso nome all’interno di percorsi specificati.
Powershell vs Bash: differenze
PowerShell e Bash possono sembrare simili quando impari per la prima volta a usarli, ma sono essenzialmente bestie completamente diverse con filosofie di progettazione che a volte si scontrano. Ecco alcune cose molto cruciali che li distinguono:
1. Controllo dell’accesso degli utenti
Se vuoi fare qualcosa di amministrativo con Bash, tutto ciò che devi fare è far precedere il tuo comando con sudo . Una volta eseguito il comando, verrai immediatamente riportato alla shell dell’utente. L’esecuzione di un comando root lascia meno spazio agli errori e ti costringe a rivedere ciò che stai facendo.
PowerShell, d’altra parte, può essere eseguito solo in modalità amministrativa o utente. Se vuoi passare da uno all’altro, devi aprire una nuova sessione. Per aprire PowerShell in modalità amministrativa, è necessario fare clic con il pulsante destro del mouse sull’icona del programma e fare clic su “Esegui come amministratore”. In alternativa, all’interno di una sessione terminale, puoi semplicemente digitare Start-Process powershell -verb runAs
e si aprirà una seconda sessione con privilegi amministrativi.
2. Uscita
Quando digiti un comando in Bash, in pratica stai eseguendo un programma separato e quell’eseguibile ti darà il risultato desiderato. Il modo in cui l’output viene formattato dipende da come lo sviluppatore di quel particolare programma lo desiderava formattato.
C’è molta flessibilità qui, il che è fantastico, ma lo svantaggio è la mancanza di uniformità.
L’output del comando in PowerShell è in genere formattato in un unico standard unificato. Il testo che vedi sullo schermo è una versione leggibile dei dati che può essere interpretata da altri programmi.
Ciò consente alle persone che scrivono script e applicazioni di utilizzare solo le funzionalità e i comandi di PowerShell per ottenere tutte le informazioni di cui hanno bisogno.
3. Sintassi
Bash usa una sintassi davvero unica (ad esempio, if [condition]; then code here; fi
) che non è tipicamente vista in altri linguaggi di scripting. Non è incredibilmente difficile da usare, ma può essere un po’ non convenzionale per qualcuno che sta appena iniziando a imparare a scrivere script.
Per quanto riguarda i comandi utente, non c’è una chiara uniformità. Ogni singolo programma viene fornito con la propria sintassi dei comandi. Devi sapere come usarli prima di poterli integrare nel tuo script bash.
La sintassi degli script di PowerShell è simile a qualsiasi altra. NET (ad es. if (condition) {. ..code here... }
). Per le persone abituate a sviluppare all’interno dell’ecosistema di Microsoft, non c’è quasi nessuna curva di apprendimento.
I comandi utente seguono una struttura rigida : un verbo, seguito da un trattino, seguito da un sostantivo. Ad esempio, Get-ChildItem
elencherà tutti i file nella directory corrente. I comandi che non sono specifici di PowerShell possono comunque seguire una struttura simile a Bash. Se lo stai usando su Linux, sarai comunque in grado di eseguire ogni comando Linux.
4: Flessibilità
Se padroneggi Bash, saprai come operare con gli ambienti terminali di innumerevoli distribuzioni Linux, l’ecosistema BSD e persino macOS. È di gran lunga il re dell’universalità. Sebbene macOS sia passato a zsh nel 2019, ha ancora lo spirito Bash al centro.
PowerShell è in grado di funzionare praticamente all’interno di qualsiasi sistema operativo, ma è principalmente pensato per funzionare insieme ai prodotti Microsoft. Se lo stai usando, molto probabilmente lo farai all’interno di Windows.
Se tutto ciò che impari sono le convenzioni specifiche di PowerShell, essenzialmente rimarrai bloccato su un’isola con i prodotti Microsoft. Anche se non deve essere così, non si può sfuggire al fatto che il guscio brilla davvero solo in quella situazione. Per quanto riguarda gli aspetti negativi, tuttavia, è uno che arriva con un’enorme fetta della quota di mercato globale dei desktop.
Domande frequenti
Posso eseguire bash in Windows e PowerShell in Linux?
Per eseguire bash in Windows, è sufficiente installare il sottosistema Windows per Linux eseguendo un prompt dei comandi come amministratore e digitando wsl --install
. Avrai accesso immediato ai comandi bash al termine dell’installazione.
PowerShell all’interno di Linux è un po’ più complicato e dipende dalla distribuzione. Microsoft include istruzioni sul suo sito Web per l’installazione di PowerShell sulle distribuzioni più popolari. Potresti notare che Arch Linux non è presente nell’elenco, ma esiste come powershell
pacchetto in AUR.
Ho bisogno di Bash in Windows?
Non necessariamente, ma ti aiuterà molto se prevedi di utilizzare alcune cose progettate più per Linux (Python, Git, ecc.). Averlo intorno non poteva far male. L’uso del sottosistema Windows per Linux per installare Bash ti consente anche di avere una shell Linux completa con cui sperimentare, il che è un ottimo modo per presentarti all’ambiente operativo se non hai familiarità.
I comandi DOS di Windows funzionano in PowerShell?
Generalmente lo fanno. PowerShell non sostituisce il prompt dei comandi di Windows originale. Invece, è un livello che lavora su di esso per fornire nuove funzionalità. Probabilmente non ti perderai nulla se usi semplicemente PowerShell invece del collaudato cmd.exe.
Lascia un commento