Un shell es un tipo de programa informático que te permite, como usuario, controlar tu sistema operativo con una interfaz de línea de comandos (CLI) o una interfaz gráfica de usuario (GUI). Esencialmente, los shells son formas directas de comunicarse con tu sistema operativo sobre qué acciones realizar, normalmente a través de la automatización. Estas acciones pueden ir desde las copias de seguridad diarias hasta la supervisión de sistemas y actividades, e incluso la realización de auditorías rutinarias.
Shells vs. kernels
No se puede hablar de shells sin entender primero en qué se diferencian de los kernels. En pocas palabras, los kernels son el núcleo de un sistema operativo. Es la capa primaria entre el hardware y el software del ordenador, siendo el kernel el responsable de interactuar con el hardware.
Los shells son el punto de conexión intermedio entre el usuario y el kernel. Ejecutan las órdenes emitidas por el usuario al núcleo traduciendo primero las órdenes del usuario en llamadas al sistema que solicitan al kernel que realice una tarea específica. Esta es la razón por la que a veces se hace referencia a los shells como intérpretes de comandos: interpretan lo que quieres para que el kernel pueda entender qué hacer a continuación.
¿Cómo funciona un programa shell?
Un shell puede ser un CLI o un GUI y no debe confundirse con un terminal. Un terminal proporciona un símbolo del sistema para trabajar con un shell, pero el propio shell utiliza scripts para configurar la automatización. Por ejemplo, en un dispositivo Windows, el terminal por defecto se llama Símbolo del sistema (en comparación con los dispositivos macOS, que se llama Terminal), y tiene este aspecto:
Utilizar el Símbolo del sistema de Windows puede ser relativamente sencillo, y cada vez son más los usuarios que utilizan PowerShell, un shell de línea de comandos y lenguaje de scripting mucho más completo, para ejecutar la acción deseada. Ten en cuenta que el Símbolo del sistema no es un intérprete de comandos, sino el terminal en el que se puede ejecutar un intérprete de comandos, como PowerShell. PowerShell puede tener este aspecto:
Como puedes ver, proporciona la información necesaria de forma rápida y sencilla, en función de tu comando. PowerShell puede ejecutarse en cualquier sistema operativo, aunque se utiliza principalmente en dispositivos Windows.
¿Quieres aprender los conceptos básicos de PowerShell en sólo 30 minutos?
Hay que tener en cuenta que los shell scripts no se etiquetan igual en todos los sistemas operativos. Por ejemplo, algunos scripts pueden llamarse Sh, Bash, csh y tesh. En los sistemas operativos VM de IBM, se denominan EXEC, mientras que los shell scripts en DOS se denominan archivos por lotes.
En cualquier caso, todos los shells utilizan un terminal para mostrar comandos legibles por humanos y realizar la interacción u operación deseada.
Diferentes tipos de shells
Bourne shell
El Bourne shell, a veces conocido como el intérprete de órdenes original de Unix y abreviado como «sh», fue desarrollado en 1979 por Stephen Bourne. Contiene funciones como el control de flujo y un mejor manejo de las cadenas de caracteres que facilitan el uso y la comprensión del shell como lenguaje de programación. Sin embargo, se sabe que el shell es un poco inflexible y poco interactivo.
Aunque ha sido sustituido por C Shell y KornShell (entre otros), el Bourne shell sigue siendo popular hoy en día por su velocidad y compacidad.
Línea de comandos (C Shell)
El C Shell («csh») es un intérprete de comandos para sistemas Unix y similares. Fue creado en 1978 por Berkeley Software Distribution y ofrece varias mejoras respecto al anterior Bourne Shell, especialmente para uso interactivo.
Puede tener este aspecto:
KornShell
Los Laboratorios Bell introdujeron el KornShell («ksh») a principios de la década de 1980. Incluye muchas funciones de C Shell, pero es notablemente más rápido. Además de ejecutar scripts Bourne Shell y características y funciones similares a C, también incorpora aritmética.
Shell Bourne-Again de GNU
El Bourne-Again Shell («bash»), publicado en 1989 por Brian Fox para el Proyecto GNU, es una alternativa de código abierto al Bourne Shell. Es comparable a KornShell y C Shell, pero incluye teclas de flecha asignadas automáticamente para una edición y recuperación de comandos más rápidas. En la actualidad, Bash se considera el intérprete de comandos por defecto de la mayoría de las distribuciones de Linux y utiliza scripts Bash.
¿Qué hace el script de shell?
En lugar de escribir cada comando manualmente cada vez que necesitas hacer algo, los shells, a través de sus scripts, pueden realizar varias tareas simultáneamente, como copias de seguridad, ejecución de programas, etc. También pueden automatizar tareas repetitivas, reduciendo la probabilidad de errores humanos, minimizando el impacto potencial de los datos sucios y mejorando significativamente la eficiencia de las TI.
Dicho esto, los scripts de shell no están diseñados para tareas complejas o de gran envergadura. Además, al igual que ocurre con los idiomas, puede llevar algún tiempo dominarlos. Un desliz de sintaxis, por ejemplo, puede causar errores dramáticos, y tendrás que ir a través de cada comando para determinar dónde se produjo el error.
Ventajas
Shell puede liberar a tus técnicos para que se centren en proyectos más estratégicos. Además de ayudarte a realizar diversas tareas, los shells también te permiten personalizar tus propios scripts para adaptarlos a tus objetivos y necesidades específicos.
Desventajas
Los shells pueden ser implacables en términos de sintaxis. Un solo error puede ser difícil de identificar y costoso a largo plazo. Para aclararlo, la sintaxis del shell es similar a la utilizada en el lenguaje natural. Se refiere al orden de las operaciones y a cómo se disponen las palabras y frases.
Shells para aumentar la eficacia de TI
Es posible que las shell y, en consecuencia, sus scripts no sean lo primero en lo que pienses cuando consideres la gestión de endpoints. No obstante, los shells desempeñan un papel esencial en el modo en que tus técnicos pueden automatizar tareas y ofrecerte un mejor servicio a ti, a tu organización y a tus usuarios finales. Aunque no es necesario dominar los shells, conviene comprender sus fundamentos para obtener mejores resultados empresariales.