Índice de contenidos
NOMBRE
sh – intérprete de comandos (shell)
SINOPSIS
sh [- /+aCefnuvxIimqsVEbc ][- o longname ] -words [ target … ]
DESCRIPCIÓN
Sh es el intérprete de comandos estándar del sistema. La versión actual de sh está en proceso de ser cambiada para ajustarse a las especificaciones POSIX 1003.2 y 1003.2a para el shell. Esta versión tiene muchas características que la hacen parecer similar en algunos aspectos a la shell de Korn, pero no es un clon de shell de Korn (ver ksh(1)). Sólo las características designadas por POSIX más algunas extensiones de Berkeley, están siendo incorporadas en este shell. Esperamos conformidad con POSIX para cuando se libere 4.4 BSD. Esta página de manual no pretende ser un tutorial o una especificación completa del shell.
Descripción general
El shell es un comando que lee líneas de un archivo o de la terminal, las interpreta y generalmente ejecuta otros comandos. Es el programa que se está ejecutando cuando un usuario inicia sesión en el sistema (aunque un usuario puede seleccionar una shell diferente con el comando chsh(1)). El shell implementa un lenguaje que tiene construcciones de control de flujo, una instalación de macros que proporciona una variedad de características además de almacenamiento de datos, junto con capacidades de edición de historial y de línea incorporadas. Incorpora muchas características para ayudar al uso interactivo y tiene la ventaja de que el lenguaje interpretativo es común tanto al uso interactivo como al no interactivo (shell scripts). Es decir, los comandos se pueden escribir directamente en el intérprete de comandos en ejecución o se pueden poner en un archivo y el archivo se puede ejecutar directamente por el intérprete de comandos.
Invocación
Si no hay args presentes y si la entrada estándar del shell está conectada a un terminal (o si el indicador – i está activado), y la opción – c no está presente, el shell se considera un shell interactivo. Un intérprete de comandos interactivo generalmente solicita antes de cada comando y maneja los errores de programación y de comando de manera diferente (como se describe a continuación). Cuando se inicia por primera vez, el intérprete de comandos inspecciona el argumento 0, y si comienza con un guión `-‘ el intérprete de comandos también se considera un intérprete de comandos de inicio de sesión. Normalmente, el sistema lo hace automáticamente cuando el usuario inicia sesión por primera vez. Una shell de inicio de sesión lee primero los comandos de los archivos /etc/profile y .profile si existen. Si la variable de entorno ENV se establece en la entrada de una shell, o en el perfil.profile de una shell de inicio de sesión, la shell lee a continuación comandos del archivo nombrado en ENV Por lo tanto, un usuario debe colocar comandos que se ejecutarán sólo en el momento del inicio de sesión en el archivo.profile, y comandos que se ejecutarán para cada shell dentro del archivo ENV . Para establecer la variable ENV en algún archivo, coloque la siguiente línea en su perfil.de su directorio raíz
ENV=$HOME/.shinit; exportar ENV
sustituyendo «`.shinit» por cualquier nombre de archivo que desee. Dado que el archivo ENV se lee para cada invocación de la shell, incluyendo scripts shell y shells no interactivos, el siguiente paradigma es útil para restringir comandos en el archivo ENV a invocaciones interactivas. Ponga comandos dentro del «`caso» y «`esac» abajo (estos comandos se describen más adelante):
case $- in *i*)
# comandos para uso interactivo solamente
….
esac
Si se han especificado argumentos de línea de comandos además de las opciones, el intérprete de comandos trata el primer argumento como el nombre de un archivo desde el que leer comandos (un script del intérprete de comandos), y los argumentos restantes se establecen como los parámetros posicionales del intérprete de comandos ($1, $2, etc.). De lo contrario, el shell lee comandos de su entrada estándar.
Procesamiento de listas de argumentos
Todas las opciones de una sola letra tienen un nombre correspondiente que puede usarse como argumento para la opción – o . El nombre set – o se proporciona junto a la opción de una sola letra en la descripción siguiente. Especificar un guión «-» activa la opción, mientras que usar un más «+» desactiva la opción. Las siguientes opciones se pueden configurar desde la línea de comandos o con el set(1) incorporado (descrito más adelante).
-a allexport
Exportar todas las variables asignadas a. (NO IMPLEMENTADO para 4.4alfa)
-c
Leer comandos desde la línea de comandos. No se leerá ningún comando de la entrada estándar.
-C noclobber
No sobrescribir archivos existentes con «>». (NO IMPLEMENTADO para 4.4alfa)
-e errexit
Si no es interactivo, salga inmediatamente si algún comando no probado falla. El estado de salida de un comando se considera explícitamente probado si el comando se utiliza para controlar un si elifwhile o hasta o si el comando es el operando izquierdo de un operador «`&&» o «`||||».
-f noglob
Desactivar la expansión de la ruta de acceso.
-n noexec
Si no es interactivo, lea los comandos pero no los ejecute. Esto es útil para comprobar la sintaxis de los scripts de shell.
-u nounset
Escriba un mensaje de error estándar cuando intente expandir una variable que no esté definida, y si la shell no es interactiva, salga inmediatamente. (NO IMPLEMENTADO para 4.4alfa)
-v verbose
La shell escribe su entrada en el error estándar a medida que se lee. Útil para la depuración.
-x xtrace
Escriba cada comando en error estándar (precedido de un `+ ‘ antes de ejecutarlo. Útil para la depuración.
-q quietprofile
Si las opciones – v o – x , no las aplique al leer los archivos de inicialización, ya que son /etc/profile.profile y el archivo especificado por la variable de entorno ENV .
-I ignoreeof
Ignorar los EOFs de la entrada cuando son interactivos.
-i interactive
Forzar al proyectil a comportarse de forma interactiva.
-m monitor
Activar el control de trabajos (configurado automáticamente cuando es interactivo).
-s stdin
Leer comandos de entrada estándar (se establece automáticamente si no hay argumentos de archivo presentes). Esta opción no tiene efecto cuando se establece después de que el shell ya ha comenzado a funcionar (es decir, con set(1)).
-V vi
Habilite el editor de línea de comandos vi(1) incorporado (deshabilita – E si se ha configurado).
-E emacs
Habilite el editor de línea de comandos emacs(1) integrado (deshabilita – V si se ha configurado).
-b notify
Habilitar la notificación asincrónica de la terminación del job de fondo. (NO IMPLEMENTADO para 4.4alfa)
Estructura léxica
El shell lee las entradas en términos de líneas de un archivo y las divide en palabras en espacios en blanco (espacios en blanco y tabulaciones), y en ciertas secuencias de caracteres que son especiales para el shell llamadas «`operadores» Hay dos tipos de operadores: operadores de control y operadores de redirección (su significado se discute más adelante). La siguiente es una lista de operadores:
«Operadores de control:»
&&&& (;) ;; | |||"Operador de redireccionamiento:"
CitandoLas citas se utilizan para eliminar el significado especial de ciertos caracteres o palabras del shell, como operadores, espacios en blanco o palabras clave. Hay tres tipos de citas: citas simples coincidentes, citas dobles coincidentes y barra invertida.
Barra diagonal inversa
Una barra invertida preserva el significado literal del siguiente carácter, con la excepción de la nueva línea Aq. Una barra invertida que precede a una nueva línea Aq se trata como una continuación de línea.
Citas simples
Incluir caracteres en comillas simples preserva el significado literal de todos los caracteres (excepto las comillas simples, lo que hace imposible poner comillas simples en una cadena de comillas simples).
Citas dobles
Incluir caracteres dentro de comillas dobles preserva el significado literal de todos los caracteres excepto el signo de dólar ($), la barra invertida (`) y la barra invertida () La barra invertida dentro de las comillas dobles es históricamente extraña, y sirve para citar sólo los siguientes caracteres:
$ ` ` N - newlineDe lo contrario, sigue siendo literal.
Palabras reservadas
Las palabras reservadas son palabras que tienen un significado especial para el shell y se reconocen al principio de una línea y después de un operador de control. Las siguientes son palabras reservadas:
! Ta elif Ta fi Ta while Ta case
else Ta for Ta then Ta { Ta }
do Ta done Ta until Ta if Ta esac
Su significado se discute más adelante.
Alias
Un alias es un nombre y un conjunto de valores correspondiente que utiliza el comando alias(1) incorporado. Siempre que puede ocurrir una palabra reservada (ver arriba), y después de comprobar si hay palabras reservadas, el shell comprueba la palabra para ver si coincide con un alias. Si lo hace, lo reemplaza en el flujo de entrada con su valor. Por ejemplo, si hay un alias llamado ```lf'' con el valor ``ls -F'', entonces la entrada:
lf foobarse convertiría en
ls -F foobar
Los alias proporcionan una forma conveniente para que los usuarios ingenuos creen abreviaturas de comandos sin tener que aprender a crear funciones con argumentos. También se pueden utilizar para crear código léxicamente oscuro. Se desaconseja este uso.
Comandos