stringtranslate.com

Shell (informática)

Una interfaz gráfica de finales de los años 1980, que presenta una ventana TUI para una página de manual , una ventana con forma (en punto), así como varias ventanas iconificadas . En la parte inferior derecha podemos ver un emulador de terminal ejecutando un shell Unix , en el que el usuario puede escribir comandos como si estuviera sentado frente a 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 otros programas. En general, los shells de los sistemas operativos 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 denomina shell porque es la capa más externa alrededor del sistema operativo. [1] [2]

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 ), mientras que los shells gráficos suponen una carga baja para los usuarios principiantes de computadoras y se caracterizan como Aunque es fácil de usar, la mayoría de los sistemas operativos habilitados para GUI también proporcionan shells CLI, normalmente para realizar tareas avanzadas.

Descripción general

Los sistemas operativos brindan diversos 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 el monitoreo y configuración del sistema operativo.

La mayoría de los shells de los sistemas operativos 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 utilizan la API del kernel de la misma manera que la utilizan otros programas de aplicación. Un shell gestiona la interacción usuario-sistema solicitando a los usuarios entradas, interpretando sus entradas y luego manejando la salida del sistema operativo subyacente (muy parecido a un bucle de lectura, evaluación e impresión, REPL ). [3] 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 tipo Unix y Microsoft Windows. En sistemas tipo Unix, el protocolo Secure Shell (SSH) generalmente se usa para shells basados ​​en texto, mientras que el túnel SSH se puede usar para interfaces gráficas de usuario (GUI) basadas en el sistema X Window . En Microsoft Windows, se puede utilizar el Protocolo de escritorio remoto para proporcionar acceso remoto a la GUI y, desde Windows Vista , PowerShell Remote se puede utilizar para acceso remoto basado en texto a través de WMI, RPC y WS-Management. [4]

La mayoría de los shells de los sistemas operativos se clasifican 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 proporcionan una interfaz gráfica de usuario (GUI). Otras posibilidades, aunque no tan comunes, incluyen una interfaz de usuario de voz y varias implementaciones de una interfaz de usuario basada en texto (TUI) que no son CLI, como los sistemas de menús basados ​​en texto. A menudo se debaten los méritos relativos de los shells basados ​​en CLI y GUI. Muchos usuarios de ordenadores utilizan ambos dependiendo de la tarea a realizar.

Historia

Los primeros sistemas interactivos proporcionaban un intérprete de línea de comandos simple como parte del monitor residente . Este intérprete puede recibir diferentes nombres, como COMCONen los sistemas DEC TOPS-10 . [5] El intérprete ejecutaría uno de varios comandos predefinidos, uno de los cuales sería ejecutar un programa de usuario. Los comandos comunes iniciarían y cerrarían la sesión del usuario en el sistema, asignarían, liberarían y manipularían dispositivos y archivos, y consultarían diversos datos sobre el sistema o un proceso de usuario. [6]

El propósito de tal procedimiento es crear un medio de intercambio en el que se pueda activar cualquier procedimiento, como si fuera llamado desde el interior de otro programa . En adelante, para simplificar, nos referiremos a ese procedimiento como "SHELL".

Louis Pouzin, SHELL: una herramienta global para llamar y encadenar procedimientos en el sistema [7]

En 1964, para el sistema operativo Multics , Louis Pouzin concibió la idea de "usar comandos de alguna manera como un lenguaje de programación" y acuñó el término shell para describirlo. [8] En un documento de 1965, el shell se define como "un procedimiento común llamado automáticamente por el supervisor cada vez que un usuario escribe algún mensaje en su consola, en un momento en el que no tiene ningún otro proceso en ejecución activa bajo el control de la consola. El procedimiento actúa como una interfaz entre los mensajes de la consola y la subrutina [en el supervisor]". [9] Este sistema fue implementado por primera vez por Glenda Schroeder y un hombre anónimo de General Electric . [10]

Multics también introdujo la función activa , un concepto clave en todos los shells posteriores. Esto se define como

una cadena... que se reemplaza por un valor de retorno de cadena de caracteres antes de que se ejecute la línea de comando que la contiene. Las funciones activas se utilizan a menudo... para implementar macros en lenguaje de comandos. [11]

En 1971, Ken Thompson desarrolló el shell Thompson en la primera versión de Unix. Si bien es más simple que el shell Multics, contiene algunas características innovadoras que se han implementado en los shells modernos, incluido el uso de < y > para la redirección de entrada y salida .

El shell gráfico apareció por primera vez en el sistema NLS de Douglas Engelbart , demostrado en diciembre de 1968 en la Fall Joint Computer Conference en San Francisco, en lo que se ha llamado La madre de todas las demostraciones . Los colegas de Engelbart en el Instituto de Investigación de Stanford llevaron el concepto al Centro de Investigación Xerox de Palo Alto (PARC), donde apareció en el Alto , presentado en 1973. Desde allí, la idea se extendió a la Lilith de Niklaus Wirth en 1980, y al Apple Lisa en 1980. 1983, luego se volvió omnipresente.

Shells de línea de comandos

Símbolo del sistema , un shell CLI en Windows
Bash , un shell 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 pulsaciones de teclas a un programa intérprete 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 una aplicación, enumerar archivos, iniciar sesión como 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 la 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 a menudo también estaban disponibles interfaces de terceros, que proporcionaban 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 tipo Unix, el programa telnet tiene varios comandos para controlar un enlace a un sistema informático remoto. Dado que los comandos del programa se componen de 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 interpreta el sistema local. El programa se vuelve modal, alternando entre interpretar comandos del teclado o pasar pulsaciones de teclas como datos para 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 las hubiera escrito un usuario. Es posible que se apliquen funciones especiales en la CLI cuando se llevan a cabo estas instrucciones almacenadas. Estos archivos por lotes (archivos de script) 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 los elementos esenciales necesarios 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 el shell de un sistema operativo o en un programa diseñado específicamente.

Varios shells de línea de comandos, como Xonsh, Bash (shell Unix) y Z shell , ofrecen finalización de línea de comandos , lo que permite al intérprete expandir comandos basándose en unos pocos caracteres ingresados ​​por el usuario. [12]

Un intérprete de línea de comandos puede ofrecer una función de historial, de modo que el usuario pueda recordar comandos anteriores emitidos al sistema y repetirlos, posiblemente con alguna edición. Dado que todos los comandos del sistema operativo debían ser escritos por el usuario, eran comunes los nombres de comandos cortos y los sistemas compactos para representar las opciones del programa. A veces los nombres cortos eran difíciles de recordar para el 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 medios para manipular programas gráficamente, permitiendo operaciones como abrir, cerrar, mover y cambiar el tamaño de ventanas , así como cambiar el foco entre ventanas. Los shells gráficos 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 sobre 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 tipo 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 de iniciar aplicaciones instaladas, administrar ventanas abiertas y escritorios virtuales, y a menudo para admitir un motor de widgets.

En el caso de macOS , Quartz Compositor actúa como sistema de ventanas y el shell consta del Finder , [13] Dock , [ 13] SystemUIServer, [13] y Mission Control . [14]

DOS y MS-DOS

DOS no tiene un shell gráfico propio, pero esta situación ha sido cambiada por muchos desarrolladores externos, que desarrollaron docenas de shells gráficos. Algunos de estos shells gráficos se han desarrollado como software comercial , otros como software gratuito y algunos como gratuitos y de código abierto . [15]

En 1988, Microsoft desarrolló DOS Shell , que fue uno de los primeros administradores de archivos exitosos con GUI para MS-DOS y PC DOS .

Captura de pantalla del shell gráfico «Polit»

Polit OS  [Reino Unido] o shell gráfico «Polit» (Reino Unido: Політ , iluminado. 'Vuelo') fue uno de los últimos intentos de crear un shell gráfico de aspecto moderno para DOS con interfaz ucraniana , escrito en Pascal con Borland Pascal 7 y posterior. con Pascal Virtual . Fue desarrollado como un proyecto de código abierto entre 1999 y 2005, y se inspiró en las primeras versiones de Microsoft Windows , como Windows 3.1 y Windows 95 , que a su vez eran shells gráficos comerciales para MS-DOS, y en Windows XP. En comparación con Windows 3.1, Polit OS no tiene la capacidad de iniciar otras aplicaciones de DOS; en cambio, se distribuye con su propio conjunto de programas (incluido el administrador de archivos) y juegos, y también se desarrollaron aplicaciones y juegos de terceros, incluidos diseños especiales. IDE Polit Pascal para programación orientada a objetos, que permite crear software para Polit directamente bajo Polit.

Otros shells gráficos similares para DOS, con más o menos prestaciones: GEOS , FreeGEOS , GEM , FreeGEM , OpenGEM, oZone GUI, SEAL, SWORD, etc. [15] [16 ] [17]

Microsoft Windows

Las versiones modernas del sistema operativo Microsoft Windows utilizan el shell de Windows como 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 en versiones posteriores de Windows de tipo 95 y NT, al menos hasta 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 este último.

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

Otros usos

"Shell" también se utiliza libremente para describir una aplicación de software que está "construida alrededor" de un componente 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 núcleo del sistema operativo . A veces también se les llama "envoltorios". [2]

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. [18]

Ver también

Referencias

  1. ^ "El quinto hombre de Internet", Brain scan, The Economist , Londres: Economist Group , 13 de diciembre de 2013, Pouzin creó un programa llamado RUNCOM que ayudaba a los usuarios a automatizar comandos tediosos y repetitivos. Ese programa, que describió como un "caparazón" alrededor de las entrañas de la computadora, dio inspiración (y un nombre) a toda una clase de herramientas de software, llamadas shells de línea de comandos, que aún acechan bajo la superficie de los sistemas operativos modernos.
  2. ^ ab Raymond, Eric S. (ed.). "caparazón". El archivo de jerga .
  3. ^ "Shells del sistema operativo". Centro de información AIX 6.1 . IBM Corp. _ Consultado el 16 de septiembre de 2012 .
  4. ^ Wheeler, Sean (14 de octubre de 2018). "Ejecución de comandos remotos". Documentos de Microsoft . Microsoft . Consultado el 30 de junio de 2019 . Puede ejecutar comandos en una o cientos de computadoras con un solo comando de PowerShell. Windows PowerShell admite la informática remota mediante el uso de diversas tecnologías, incluidas WMI, RPC y WS-Management.
  5. ^ Digital Equipment Corporation (noviembre de 1980). INTERNOS DE MONITOR TOPS-10 (PDF) . págs. CMND-1 – CMND-16 . Consultado el 29 de marzo de 2022 .
  6. ^ Digital Equipment Corporation (agosto de 1977). Manual de comandos del sistema operativo DECSystem 10 (PDF) . Consultado el 29 de marzo de 2022 .
  7. ^ {{ citar web|last1=Poizin |first1=Louis|title=The SHELL: una herramienta global para llamar y encadenar procedimientos en el sistema|url=https://people.csail.mit.edu/saltzer/Multics/Multics -Documentos/MDN/MDN-4.pdf
  8. ^ Pouzin, Luis. "El origen de la concha". multicians.org . Consultado el 29 de marzo de 2022 .
  9. ^ Pouzin, Luis. "The SHELL: Una herramienta global para llamar y encadenar procedimientos en el sistema" (PDF) . MIT.edi . Consultado el 29 de marzo de 2022 .
  10. ^ Pouzin, Luis. "El origen de la concha". multicians.org . Consultado el 12 de febrero de 2024 .
  11. ^ Honeywell, inc. (febrero de 1983). Comandos comunes de Multics (PDF) . págs. 1-1–1-2 . Consultado el 29 de marzo de 2022 .
  12. ^ Sitio web oficial de Xonsh
  13. ^ abc "El ciclo de vida de un demonio". Apple Inc.
  14. ^ "Reiniciar Mission Control en OS X Lion". OSX diario. 23 de noviembre de 2011.
  15. ^ ab "dos:gui_shells [Vintage2000]". viejo.vintage2000.org . Consultado el 29 de diciembre de 2023 .
  16. ^ Green, Richard L. "SOFTWARE GRATUITO PARA DOS: escritorios, shells, GUI". bttr-software.de .
  17. ^ shotter_nail (18 de diciembre de 2022), 22 GUI de DOS que vale la pena probar: archivos de instalación de Vbox VHD + , consultado el 29 de diciembre de 2023
  18. ^ Sociedad Británica de Computación: glosario BCS de términos informáticos y TIC. Educación Pearson. 2005. pág. 135.ISBN _ 978-0-13-147957-9.