PowerShell frente a Bash: diferencias clave que debe conocer
Si posee la más mínima familiaridad con los emuladores de terminal en las computadoras, es probable que haya oído hablar de Bash de Linux y PowerShell de Microsoft. Ambos son omnipresentes en la vida de los profesionales que se especializan en cualquiera de los sistemas operativos. Sin embargo, si no está viviendo su vida cotidiana frente a un indicador de shell, es probable que no haya pensado mucho en cómo se compararían los dos. En ese caso, ¡nunca ha habido un mejor momento para aprender!
¿Qué es PowerShell?
Microsoft introdujo Powershell en 2006 para actuar como una interfaz de línea de comandos que se ejecuta sobre un marco de secuencias de comandos versátil y potente. Fue diseñado para ayudar a los administradores de Windows a crear pequeñas aplicaciones que utilizan «comandos» (conocidos oficialmente como «cmdlets») para automatizar una gran parte de su trabajo.
Más importante aún, su estructura de comandos y «capacidad de scripts» representa una reelaboración completa del antiguo MS-DOS sobre el que se construyó originalmente Windows. Tiene una sintaxis más uniforme y una forma de presentar la información a la que es fácil acostumbrarse y codificar.
Esto no pretende reemplazar la línea de comandos de Windows que la mayoría de la gente está acostumbrada a ejecutar, sino que la complementa con sus propias funciones de automatización y configuración. Por ejemplo, si intenta administrar un servicio de Microsoft Azure en la nube, ahora puede hacerlo con el Connect-AzAccount
comando en lugar de usar una sesión de escritorio remoto.
Al igual que Bash, PowerShell es completamente auditable, lo que permite su uso en entornos muy sensibles donde es fundamental saber todo lo que sucede dentro del sistema.
¿Qué es bash?
Bash es el abuelo de 1989 que sigue siendo relevante dentro de los entornos Linux a pesar de todos los shells más elegantes que han intentado eclipsarlo. Al igual que PowerShell, Bash proporciona un marco con el que escribir scripts para automatizar la administración mucho más fácilmente.
Debido a que su estructura de comando y sintaxis son omnipresentes entre varias distribuciones de Linux, BSD e incluso macOS, muchos desarrolladores se han acostumbrado a usar Bash como su opción para organizar sus proyectos.
Aunque Bash contiene un conjunto básico de operaciones que le permiten escribir scripts y transmitir información a través de la terminal, casi todos los comandos que escribe en una terminal con este shell son un programa separado. Por ejemplo, Bash no incluye los comandos ls
(listar archivos) o cat
(concatenar, o mostrar el resultado de un archivo), sino que busca ejecutables con el mismo nombre dentro de las rutas especificadas.
Powershell vs Bash: diferencias
PowerShell y Bash pueden parecer similares cuando aprende a usarlos por primera vez, pero son esencialmente bestias completamente diferentes con filosofías de diseño que a veces chocan. Aquí hay algunas cosas muy cruciales que los distinguen:
1. Control de acceso de usuarios
Si alguna vez quiere hacer algo administrativo con Bash, todo lo que tiene que hacer es preceder su comando con sudo . Una vez que se completa el comando, se lo lleva de inmediato al shell del usuario. Ejecutar un comando raíz deja menos espacio para el error y lo obliga a revisar lo que está haciendo.
PowerShell, por otro lado, solo puede ejecutarse en modo administrativo o de usuario. Si desea cambiar entre ellos, debe abrir una nueva sesión. Para abrir PowerShell en modo administrativo, debe hacer clic derecho en el icono del programa y hacer clic en «Ejecutar como administrador». Alternativamente, dentro de una sesión de terminal, puede simplemente escribir Start-Process powershell -verb runAs
y se abrirá una segunda sesión con privilegios administrativos.
2. Salida
Cuando escribe un comando en Bash, básicamente está ejecutando un programa separado, y ese ejecutable le dará el resultado que desea. La forma en que se formatea la salida depende de cómo el desarrollador de ese programa en particular quería que se formateara.
Aquí hay mucha flexibilidad, lo cual es genial, pero la desventaja es la falta de uniformidad.
La salida de comandos en PowerShell normalmente se formatea bajo un único estándar unificado. El texto que ve en la pantalla es una versión legible por humanos de los datos que otros programas pueden interpretar.
Esto permite que las personas que escriben scripts y aplicaciones usen las funciones y los comandos propios de PowerShell para obtener toda la información que necesitan.
3. Sintaxis
Bash usa una sintaxis muy singular (p. ej., if [condition]; then code here; fi
) que normalmente no se ve en otros lenguajes de secuencias de comandos. No es increíblemente difícil de usar, pero puede ser un poco poco convencional para alguien que recién comienza a aprender a escribir scripts.
En cuanto a los comandos de usuario, no hay una uniformidad clara. Cada programa viene con su propia sintaxis de comandos. Debe saber cómo usarlos antes de poder integrarlos en su script bash.
La sintaxis de secuencias de comandos de PowerShell es similar a cualquier otra. NET (p. ej., if (condition) {. ..code here... }
). Para las personas acostumbradas a desarrollar dentro del propio ecosistema de Microsoft, casi no hay una curva de aprendizaje involucrada.
Los comandos de usuario siguen una estructura rígida : un verbo, seguido de un guión, seguido de un sustantivo. Por ejemplo, Get-ChildItem
listará todos los archivos en el directorio actual. Los comandos que no son específicos de PowerShell aún pueden seguir una estructura similar a Bash. Si lo está utilizando en Linux, aún podrá ejecutar todos los comandos de Linux.
4: Flexibilidad
Si domina Bash, sabrá cómo operar con los entornos de terminal de innumerables distribuciones de Linux, el ecosistema BSD e incluso macOS. Es, con mucho, el rey de la universalidad. Aunque macOS cambió a zsh en 2019, todavía tiene el espíritu Bash en su núcleo.
PowerShell es capaz de ejecutarse dentro de prácticamente cualquier sistema operativo, pero está diseñado principalmente para ejecutarse junto con los propios productos de Microsoft. Si lo está utilizando, es muy probable que lo esté haciendo dentro de Windows.
Si todo lo que aprende son las convenciones específicas de PowerShell, básicamente se quedará atrapado en una isla con los productos de Microsoft. Aunque ese no tiene por qué ser el caso, no se puede escapar del hecho de que el caparazón solo brilla realmente en esa situación. Sin embargo, en lo que respecta a las desventajas, es una que viene con una gran parte de la participación en el mercado mundial de computadoras de escritorio.
Preguntas frecuentes
¿Puedo ejecutar bash dentro de Windows y PowerShell dentro de Linux?
Para ejecutar bash dentro de Windows, simplemente instale el Subsistema de Windows para Linux ejecutando un símbolo del sistema como administrador y escribiendo wsl --install
. Tendrá acceso instantáneo a los comandos bash después de que finalice la instalación.
PowerShell dentro de Linux es un poco más complicado y depende de la distribución. Microsoft incluye instrucciones en su sitio web para instalar PowerShell en las distribuciones más populares. Puede notar que Arch Linux no se encuentra en esa lista, pero existe como paquete powershell
en AUR.
¿Necesito Bash en Windows?
No necesariamente, pero te ayudará mucho si planeas usar algunas cosas que están diseñadas más para Linux (Python, Git, etc.). Tenerlo cerca no podía doler. El uso del subsistema de Windows para Linux para instalar Bash también le permite tener un shell de Linux completo para experimentar, lo cual es una excelente manera de presentarse al entorno operativo si no está familiarizado.
¿Funcionan los comandos de Windows DOS en PowerShell?
Generalmente lo hacen. PowerShell no reemplaza el símbolo del sistema original de Windows. En cambio, es una capa que funciona encima de ella para proporcionar una nueva funcionalidad. Probablemente no se perderá nada si solo usa PowerShell en lugar del probado y verdadero cmd.exe.
Deja una respuesta