Shell (informática) - Shell (computing)

Una interfaz gráfica de finales de la década de 1980, que presenta una ventana TUI para una página de manual , una ventana con forma (en punto) y varias ventanas iconificadas . En la parte inferior derecha podemos ver un emulador de terminal que ejecuta un shell de Unix , en el que el usuario puede escribir comandos como si estuviera sentado en un terminal .

En informática , un shell es un programa informático que expone los servicios de un sistema operativo a un usuario humano u otro programa. En general, los shells del sistema operativo utilizan una interfaz de línea de comandos (CLI) o una interfaz gráfica de usuario (GUI), según la función de la computadora y la operación particular. Se llama shell porque es la capa más externa alrededor del sistema operativo.

Los shells de línea de comandos requieren que el usuario esté familiarizado con los comandos y su sintaxis de llamada , y que comprenda conceptos sobre el lenguaje de programación específico del shell (por ejemplo, bash ).

Las carcasas gráficas suponen una carga mínima para los usuarios principiantes de computadoras y se caracterizan por ser fáciles de usar. Dado que también tienen ciertas desventajas, la mayoría de los sistemas operativos habilitados para GUI también proporcionan shells CLI.

Visión general

Los sistemas operativos brindan varios servicios a sus usuarios, incluida la administración de archivos , la administración de procesos (ejecución y finalización de aplicaciones ), el procesamiento por lotes y la supervisión y configuración del sistema operativo.

La mayoría de los shells del sistema operativo no son interfaces directas al kernel subyacente, incluso si un shell se comunica con el usuario a través de dispositivos periféricos conectados directamente a la computadora. Los shells son en realidad aplicaciones especiales que usan la API del kernel de la misma manera que lo usan otros programas de aplicación. Un shell administra la interacción usuario-sistema solicitando a los usuarios que ingresen, interpretando su entrada y luego manejando una salida del sistema operativo subyacente (muy parecido a un ciclo de lectura-evaluación-impresión, REPL ). Dado que el shell del sistema operativo es en realidad una aplicación, se puede reemplazar fácilmente con otra aplicación similar, para la mayoría de los sistemas operativos.

Además de los shells que se ejecutan en sistemas locales, existen diferentes formas de hacer que los sistemas remotos estén disponibles para los usuarios locales; estos enfoques suelen denominarse acceso remoto o administración remota. Inicialmente disponible en mainframes multiusuario , que proporcionaban interfaces de usuario basadas en texto para cada usuario activo simultáneamente por medio de un terminal de texto conectado al mainframe a través de una línea serie o módem , el acceso remoto se ha extendido a sistemas similares a Unix y Microsoft Windows. En sistemas similares a Unix, el protocolo Secure Shell se usa generalmente para shells basados ​​en texto, mientras que la tunelización SSH se puede usar para interfaces gráficas de usuario (GUI) basadas en el sistema X Window. En Microsoft Windows, el Protocolo de escritorio remoto se puede usar para proporcionar acceso remoto GUI y, desde Windows Vista , PowerShell Remote se puede usar para acceso remoto basado en texto a través de WMI, RPC y WS-Management.

La mayoría de los shells del sistema operativo se dividen en una de dos categorías: línea de comandos y gráficos. Los shells de línea de comandos proporcionan una interfaz de línea de comandos (CLI) para el sistema operativo, mientras que los shells gráficos brindan una interfaz de usuario gráfica (GUI). Otras posibilidades, aunque no tan comunes, incluyen la interfaz de usuario de voz y varias implementaciones de una interfaz de usuario basada en texto (TUI) que no son CLI. Los méritos relativos de los shells basados ​​en CLI y GUI a menudo se debaten.

Conchas de línea de comandos

Símbolo del sistema , un shell CLI en Windows
Bash , un shell de Unix ampliamente adoptado

Una interfaz de línea de comandos (CLI) es un shell del sistema operativo que utiliza caracteres alfanuméricos escritos en un teclado para proporcionar instrucciones y datos al sistema operativo, de forma interactiva. Por ejemplo, un teletipo puede enviar códigos que representan las pulsaciones de teclas a un programa de interpretación de comandos que se ejecuta en la computadora; el intérprete de comandos analiza la secuencia de pulsaciones de teclas y responde con un mensaje de error si no puede reconocer la secuencia de caracteres, o puede llevar a cabo alguna otra acción del programa, como cargar un programa de aplicación, enumerar archivos, iniciar sesión en un usuario y muchas otras. Los sistemas operativos como UNIX tienen una gran variedad de programas de shell con diferentes comandos, sintaxis y capacidades, siendo el shell POSIX una línea de base. Algunos sistemas operativos tenían un solo estilo de interfaz de comando; Los sistemas operativos básicos, como MS-DOS, venían con una interfaz de comando estándar ( COMMAND.COM ), pero las interfaces de terceros también estaban disponibles a menudo, proporcionando características o funciones adicionales como menús o ejecución remota de programas.

Los programas de aplicación también pueden implementar una interfaz de línea de comandos. Por ejemplo, en sistemas similares a Unix, el programa telnet tiene varios comandos para controlar un enlace a un sistema informático remoto. Dado que los comandos del programa se hacen con las mismas pulsaciones de teclas que los datos que se envían a una computadora remota, se requieren algunos medios para distinguirlos. Se puede definir una secuencia de escape , utilizando una pulsación de tecla local especial que nunca se transmite pero que siempre es interpretada por el sistema local. El programa se vuelve modal, alternando entre interpretar comandos desde el teclado o pasar las pulsaciones de teclas como datos a procesar.

Una característica de muchos shells de línea de comandos es la capacidad de guardar secuencias de comandos para su reutilización. Un archivo de datos puede contener secuencias de comandos que la CLI puede seguir como si los hubiera escrito un usuario. Es posible que se apliquen características especiales en la CLI cuando se llevan a cabo estas instrucciones almacenadas. Estos archivos por lotes ( archivos de secuencia de comandos) se pueden utilizar repetidamente para automatizar operaciones de rutina, como inicializar un conjunto de programas cuando se reinicia un sistema. El uso de shells en modo por lotes generalmente involucra estructuras, condicionales, variables y otros elementos de los lenguajes de programación; algunos tienen lo esencial necesario para tal propósito, otros son lenguajes de programación muy sofisticados en sí mismos. Por el contrario, algunos lenguajes de programación se pueden utilizar de forma interactiva desde un shell del sistema operativo o en un programa diseñado específicamente.

El shell de la línea de comandos puede ofrecer características como la finalización de la línea de comandos , donde el intérprete expande los comandos basándose en unos pocos caracteres introducidos por el usuario. Un intérprete de línea de comandos puede ofrecer una función de historial, de modo que el usuario pueda recuperar comandos anteriores emitidos al sistema y repetirlos, posiblemente con alguna edición. Dado que el usuario tenía que escribir todos los comandos del sistema operativo, eran comunes los nombres cortos de los comandos y los sistemas compactos para representar las opciones del programa. A veces, los nombres cortos eran difíciles de recordar para un usuario, y los primeros sistemas carecían de los recursos de almacenamiento para proporcionar una guía detallada de instrucciones para el usuario en línea.

Conchas gráficas

Una interfaz gráfica de usuario (GUI) proporciona un medio para manipular programas gráficamente, al permitir operaciones como abrir, cerrar, mover y cambiar el tamaño de las ventanas , así como cambiar el enfoque entre las ventanas. Las carcasas gráficas pueden incluirse con los entornos de escritorio o venir por separado, incluso como un conjunto de utilidades poco acopladas.

La mayoría de las interfaces gráficas de usuario desarrollan la metáfora de un "escritorio electrónico" , donde los archivos de datos se representan como si fueran documentos en papel en un escritorio, y los programas de aplicación de manera similar tienen representaciones gráficas en lugar de ser invocados por nombres de comandos.

Sistemas similares a Unix

Operación de arrastrar y soltar realizada en un grupo de archivos entre KDesktop y Konqueror en KDE

Los shells gráficos normalmente se construyen sobre un sistema de ventanas . En el caso de X Window System o Wayland , el shell consta de un administrador de ventanas X o un compositor Wayland , respectivamente, así como de uno o varios programas que brindan la funcionalidad para iniciar aplicaciones instaladas, administrar ventanas abiertas y escritorios virtuales, y a menudo para admitir un motor de widgets.

En el caso de macOS , Quartz podría considerarse como el sistema de ventanas, y el shell consta de Finder , Dock , SystemUIServer y Mission Control .

Microsoft Windows

Las versiones modernas del sistema operativo Microsoft Windows utilizan el shell de Windows como su shell. Windows Shell proporciona un entorno de escritorio , un menú de inicio y una barra de tareas , así como una interfaz gráfica de usuario para acceder a las funciones de administración de archivos del sistema operativo. Las versiones anteriores también incluyen el Administrador de programas , que era el shell de la serie 3.x de Microsoft Windows, y que de hecho se incluía con versiones posteriores de Windows de los tipos 95 y NT al menos a través de Windows XP. Las interfaces de las versiones 1 y 2 de Windows eran marcadamente diferentes.

Las aplicaciones de escritorio también se consideran shells, siempre que utilicen un motor de terceros. Asimismo, muchas personas y desarrolladores insatisfechos con la interfaz del Explorador de Windows han desarrollado software que altera el funcionamiento y la apariencia del shell o lo reemplaza por completo. WindowBlinds de StarDock es un buen ejemplo del primer tipo de aplicación. LiteStep y Emerge Desktop son buenos ejemplos de esto último.

Los programas de interoperabilidad y el software especialmente diseñado permiten a los usuarios de Windows utilizar equivalentes de muchas de las diversas GUI basadas en Unix que se describen a continuación, así como Macintosh. Un equivalente de OS / 2 Presentation Manager para la versión 3.0 puede ejecutar algunos programas de OS / 2 en algunas condiciones utilizando el subsistema de entorno OS / 2 en versiones de Windows NT.

Otros usos

"Shell" también se usa de manera vaga para describir el software de aplicación que está "construido alrededor" de un componente en particular, como navegadores web y clientes de correo electrónico, en analogía con los shells que se encuentran en la naturaleza. De hecho, el shell (línea de comandos) encapsula el kernel del sistema operativo . Estos también se denominan a veces "envoltorios".

En los sistemas expertos , un shell es una pieza de software que es un sistema experto "vacío" sin la base de conocimientos para ninguna aplicación en particular.

Ver también

Referencias