Provided by: manpages-es-extra_0.8a-19_all bug

NOMBRE

       bash - GNU Bourne-Again SHell (el Shell de Bourne otra vez, de GNU)

SINOPSIS

       bash [opciones] [fichero]

DERECHOS DE COPIA

       Bash es Copyright © 1989, 1991, 1993, 1995, 1996 por la Free Software Foundation, Inc.

DESCRIPCIÓN

       Bash  es  un  intérprete  de  un lenguaje de órdenes compatible con sh que ejecuta órdenes
       leídas  desde  la  entrada  estándar  o  desde  un  fichero.    Bash   también   incorpora
       características útiles tomadas de los shells de Korn y C (ksh y csh).

       Bash   está   pensado  con  la  intención  de  ser  una  implementación  conforme  con  la
       especificación POSIX de Shell y Herramientas, de la IEEE (Grupo de Trabajo  1003.2  de  la
       IEEE).

OPCIONES

       Además  de  las  opciones  de  un solo carácter documentadas en la descripción de la orden
       interna set, bash interpreta las siguientes opciones cuando es llamado:

       -c cadena Si la opción -c está presente, entonces las órdenes se leen de cadena.   Si  hay
                 argumentos  tras  la cadena, se asignan a los parámetros posicionales, empezando
                 por $0.
       -r        Si la opción -r está presente, entonces el  shell  se  vuelve  restringido  (vea
                 SHELL RESTRINGIDO más abajo).
       -i        Si la opción -i está presente, el shell es interactivo.
       -s        Si  la  opción  -s está presente, o si no quedan argumentos tras el procesado de
                 las opciones, entonces las órdenes se  leen  desde  la  entrada  estándar.  Esta
                 opción  permite  definir  los parámetros posicionales cuando se llama a un shell
                 interactivo.
       -D        Se  muestra  en  la  salida  estándar  una  lista  de  cadenas   de   caracteres
                 entrecomilladas  precedidas  por  $.   Estas cadenas son las que están sujetas a
                 traducción cuando la localización en curso  no  es  C  ni  POSIX.   Esta  opción
                 implica también la -n; no se ejecuta ninguna orden.
       --        Un  --  señala el fin de las opciones e inhabilita cualquier posterior procesado
                 de opciones. Cualesquier argumentos tras -- se tratan como nombres de fichero  y
                 argumentos. Un argumento - es equivalente a --.

       Bash  también  interpreta  una  variedad de opciones multi-carácter.  Estas opciones deben
       aparecer en la línea de órdenes antes de las opciones de un solo carácter para que  puedan
       ser reconocidas.

       --dump-po-strings
              Equivalente  a  -D,  pero  la  salida  es  en  el  formato de un fichero po (objeto
              portable), del gettext de GNU.
       --dump-strings
              Equivalente a -D.
       --help Muestra un mensaje de modo de empleo en la salida estándar y acaba con éxito.
       --login
              Hace que bash actúe como si se le hubiera llamado como un  shell  de  entrada  (vea
              LLAMADA más abajo).
       --noediting
              No  utiliza  la  biblioteca  de  GNU  readline  para  leer  líneas  de  órdenes  en
              interactivo.
       --noprofile
              No lee ni el fichero de arranque de sistema /etc/profile ni ninguno de los ficheros
              de  inicio  personales ~/.bash_profile, ~/.bash_login, ni ~/.profile.  Por omisión,
              bash lee estos ficheros cuando se le llama como un shell de  entrada  (vea  LLAMADA
              más adelante).
       --norc No  lee  ni  ejecuta  el  fichero  de  inicio  personal  ~/.bashrc  si  el shell es
              interactivo.  Esta opción está activa de forma predeterminada si el shell se  llama
              como sh.
       --posix
              Cambia  el  comportamiento  de  bash donde la operación normal difiera del estándar
              POSIX 1003.2, de forma que concuerde con éste.
       --rcfile fichero
              Ejecuta órdenes desde fichero en  vez  de  desde  el  fichero  de  inicio  personal
              estándar ~/.bashrc si el shell es interactivo (vea LLAMADA más abajo).
       --restricted
              El shell se vuelve restringido (vea SHELL RESTRINGIDO más abajo).
       --verbose
              Equivale a  -v.
       --version
              Muestra información en la salida estándar sobre la versión de esta instanciación de
              bash y acaba con éxito.

ARGUMENTOS

       Si quedan argumentos tras el procesado de las opciones, y no se han dado ni la  opción  -c
       ni  la  -s,  se  supone  que  el  primer argumento es el nombre de un fichero que contiene
       órdenes del shell.  Si bash se llama de esta manera,  $0  se  define  con  el  nombre  del
       fichero,  y los parámetros posicionales se definen con los restantes argumentos.  Bash lee
       y ejecuta órdenes de este fichero, luego acaba.  El estado de salida de bash es el  de  la
       última  orden  ejecutada en el guión.  Si no se ejecuta ninguna orden, el estado de salida
       es 0.

LLAMADA

       Un shell de entrada es aquél cuyo primer carácter del argumento cero es un -, o uno que ha
       sido llamado con la opción --login.

       Un shell interactivo es uno cuya entrada y salida estándares están conectadas a terminales
       (según determina isatty(3)), o uno que ha sido llamado con la opción -i.  Se define PS1  y
       $-  incluye  i si bash es interactivo, permitiendo así a un guión del shell o a un fichero
       de arranque el comprobar este estado.

       Los siguientes párrafos  describen  cómo  bash  ejecuta  sus  ficheros  de  arranque.   Si
       cualquiera  de  los  ficheros  existe pero no puede leerse, bash informa de un error.  Las
       tildes de la ñ se expanden en nombres de ficheros como se describe más abajo en  Expansión
       de la tilde en la sección EXPANSIÓN.

       Cuando  bash  se llama como un shell de entrada interactivo, primero lee y ejecuta órdenes
       desde  el  fichero  /etc/profile,  si  es  que  existe.   Tras  leer  ese  fichero,  busca
       ~/.bash_profile,  ~/.bash_login,  y  ~/.profile, en ese orden, y lee y ejecuta órdenes del
       primero de ellos que exista y se pueda leer.  La opción --noprofile puede emplearse cuando
       se llame al shell para inhibir este comportamiento.

       Cuando  un  shell  de  entrada  termina,  bash  lee  y  ejecuta  órdenes  desde el fichero
       ~/.bash_logout, si existe.

       Cuando se arranca un shell interactivo que no es de entrada, bash lee  y  ejecuta  órdenes
       desde  ~/.bashrc,  si  es  que existe.  Esto puede evitarse mediante la opción --norc.  La
       opción --rcfile fichero forzará a bash a leer y ejecutar órdenes desde fichero en  vez  de
       ~/.bashrc.

       Cuando  bash  se  arranque de forma no interactiva, por ejemplo para ejecutar un guión del
       shell, busca la variable BASH_ENV en el entorno, expande su  valor  si  está  definida,  y
       utiliza  el  valor  expandido  como  el  nombre  de un fichero a leer y ejecutar.  Bash se
       comporta como si se ejecutaran las siguientes órdenes:
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       pero el valor de la variable PATH no se emplea para buscar el nombre del fichero.

       Si bash se llama con el nombre  sh,  intenta  imitar  el  comportamiento  de  arranque  de
       versiones  históricas  de  sh tanto como sea posible, pero sin salirse del estándar POSIX.
       Cuando se llama como un shell interactivo de entrada,  primero  intenta  leer  y  ejecutar
       órdenes  desde  /etc/profile  y  ~/.profile,  en  ese  orden.  La opción --noprofile puede
       emplearse para inhibir este comportamiento.  Cuando se llama como un shell interactivo con
       el  nombre  sh, bash busca la variable ENV, expande su valor si está definida, y emplea el
       valor expandido como el nombre de un fichero a leer y ejecutar.   Como  un  shell  llamado
       como  sh  no  intenta leer y ejecutar órdenes desde cualquier otro fichero de arranque, la
       opción --rcfile no tiene efecto.  Un shell no interactivo llamado  con  el  nombre  sh  no
       intenta  leer  ningún  fichero  de  arranque.  Cuando se llama como sh, bash entra en modo
       posix después de leer los ficheros de arranque.

       Cuando bash se arranca en modo posix, como ocurre cuando se  da  la  opción  de  línea  de
       órdenes --posix, sigue el estándar POSIX para los ficheros de arranque.  En este modo, los
       shells interactivos expanden la variable ENV y se leen y ejecutan órdenes desde el fichero
       cuyo  nombre  es  el  valor expandido de dicha variable.  No se lee ningún otro fichero de
       arranque.

       Bash intenta determinar cuándo está  siendo  llamado  por  el  demonio  de  shell  remoto,
       usualmente  rshd.   Si  bash  determina  que está siendo ejecutado por rshd, lee y ejecuta
       órdenes desde ~/.bashrc, si tal fichero existe y se puede leer.  Esto no lo hará si se  le
       llama   con   el   nombre  sh.   La  opción  --norc  puede  emplearse  para  inhibir  este
       comportamiento, y la opción --rcfile puede utilizarse  para  forzar  la  lectura  de  otro
       fichero,  pero  rshd  no  llama generalmente al shell con estas opciones ni permite que se
       den.

DEFINICIONES

       Las siguientes definiciones se usan a través del resto de este documento.
       blanco Un espacio en blanco o tabulación (tab).
       palabra
              Una secuencia de caracteres  considerados  por  el  shell  como  una  sola  unidad.
              También se conoce como un lexema (token).
       nombre Una  palabra  que  consiste  solamente  en caracteres alfanuméricos y subrayados, y
              comienza con un carácter alfabético o un subrayado. También se llama identificador.
       metacarácter
              Un carácter que, cuando  no  está  entrecomillado,  separa  palabras.  Uno  de  los
              siguientes:
              |  & ; ( ) < > espacio tab
       operador de control
              Un lexema que realiza una función de control. Es uno de los siguientes símbolos:
              || & && ; ;; ( ) | <nueva-línea>

PALABRAS RESERVADAS

       Palabras  reservadas  son  palabras  que tienen un significado especial para el shell. Las
       siguientes palabras se reconocen como reservadas cuando no van entrecomilladas y, o son la
       primera  palabra  de  una  orden  simple  (vea GRAMÁTICA DEL SHELL más abajo) o la tercera
       palabra de una orden case o for:

       ! case  do done elif else esac fi for function if in select then until while { }  time  [[
       ]]

GRAMÁTICA DEL SHELL

   Órdenes simples
       Una  orden  simple  es  una  secuencia de asignaciones opcionales de variables seguida por
       palabras separadas por blancos y redirecciones, y terminadas por un operador  de  control.
       La  primera  palabra  especifica la orden a ser ejecutada. Las palabras restantes se pasan
       como argumentos a la orden pedida.

       El valor devuelto de una orden simple es su estado de salida,  ó  128+n  si  la  orden  ha
       terminado debido a la señal n.

   Tuberías
       Una tubería es una secuencia de una o más órdenes separadas por el carácter |.  El formato
       de una tubería es:

              [time [-p]] [ ! ] orden [ | orden2 ... ]

       La salida estándar de orden se conecta a la entrada estándar de orden2.  Esta conexión  se
       realiza  antes  que  cualquier  redirección especificada por la orden (vea REDIRECCIÓN más
       abajo).

       Si la palabra reservada !  precede una tubería, el estado de  salida  de  ésta  es  el  NO
       lógico del de la última orden. De otro modo, el estado de la tubería es el de salida de la
       última orden.  El shell espera que todas las órdenes  de  la  tubería  terminen  antes  de
       devolver un valor.

       Si  la palabra reservada time precede una tubería, se informa del tiempo transcurrido, así
       como del de usuario y sistema, consumido en  la  ejecución  de  la  tubería,  cuando  ésta
       termina.  La opción -p cambia el formato de salida al especificado por POSIX.  La variable
       TIMEFORMAT puede definirse como una cadena de caracteres de formato que  especifique  cómo
       la  información  de  tiempos  debería  mostrarse;  vea  la  descripción de TIMEFORMAT bajo
       Variables del Shell más abajo.

       Cada orden en una tubería se ejecuta como un proceso separado (esto es, en un subshell).

   Listas
       Una lista es una secuencia de una o más tuberías separadas por uno de los operadores ;, &,
       &&, o ⎪⎪, y terminada opcionalmente por uno de ;, &, o <nueva-línea>.

       De  estos  operadores de listas, && y ⎪⎪ tienen igual precedencia, seguidos por ; y &, que
       tienen igual precedencia.

       Si una orden se termina mediante el operador de control &, el shell ejecuta  la  orden  en
       segundo plano en un subshell.  El shell no espera que la orden acabe, y el estado devuelto
       es 0. Las órdenes separadas por un ; se ejecutan secuencialmente; el shell espera que cada
       orden  termine,  por  orden.  El estado devuelto es el estado de salida de la última orden
       ejecutada.

       Los operadores de control && y ⎪⎪ denotan listas Y (AND) y O  (OR)  respectivamente.   Una
       lista Y tiene la forma

              orden && orden2

       orden2 se ejecuta si y sólo si orden devuelve un estado de salida 0.

       Una lista O tiene la forma

              orden ⎪⎪ orden2

       orden2  se  ejecuta  si  y sólo si orden devuelve un estado de salida distinto de cero. El
       estado de salida de las listas Y y O es el de la última orden ejecutada en la lista.

   Órdenes compuestas
       Una orden compuesta es una de las siguientes:

       (lista)
              lista se ejecuta en  un  subshell.  Después  de  que  la  orden  se  completa,  las
              asignaciones  a  variables y órdenes internas que afectaran al entorno del shell no
              permanecen en efecto. El estado de retorno es el de salida de lista.

       { lista; }
              lista se ejecuta simplemente  en  el  entorno  del  shell  en  curso.   lista  debe
              terminarse  con un salto de línea o un punto y coma.  Esto se conoce como una orden
              de grupo.  El estado de retorno es el de salida de lista.

       ((expresión))
              La expresión se evalúa de acuerdo a las reglas  descritas  abajo  bajo  la  sección
              EVALUACIÓN  ARITMÉTICA.  Si el valor de la expresión es distinto de cero, el estado
              de retorno es 0; de otro modo el estado  de  retorno  es  1.  Esto  es  equivalente
              exactamente a let "expresión".

       [[ expresión ]]
              Devuelve  un  estado  de  0  ó  1  dependiendo  de  la  evaluación  de la expresión
              condicional expresión.  Las expresiones se  componen  de  las  primarias  descritas
              adelante  bajo  EXPRESIONES CONDICIONALES.  No tienen lugar división de palabras ni
              expansión de nombres de camino en las palabras entre el [[ y el ]]; sí se  realizan
              la  expansión  de tilde, expansión de parámetros y variables, expansión aritmética,
              sustitución de orden, sustitución de proceso y eliminación de comillas.

              Cuando se emplean los operadores == y !=, la cadena a la derecha  del  operador  se
              considera  un  patrón  y  se  hace  concordar de acuerdo a las reglas descritas más
              adelante bajo el epígrafe Concordancia de patrones.  El valor devuelto es 0  si  la
              cadena  concuerda  o no concuerda con el patrón, respectivamente, y 1 en otro caso.
              Cualquier parte del patrón puede entrecomillarse para forzar la  concordancia  como
              una cadena de caracteres pura.

              Las  expresiones  pueden combinarse mediante los siguientes operadores, listados en
              orden decreciente de precedencia:

              ( expresión )
                     Devuelve el valor de  expresión.   Esto  puede  emplearse  para  cambiar  la
                     precedencia normal de los operadores.
              ! expresión
                     Verdad si expresión es falsa.
              expresión1 && expresión2
                     Verdad si ambas expresión1 y expresión2 son verdaderas.
              expresión1 || expresión2
                     Verdad si una al menos de expresión1 o expresión2 es verdad.

       Los operadores && y || no ejecutan expresión2 si el valor de expresión1 es suficiente para
       determinar el valor de retorno de la expresión condicional entera.

       for nombre [ in palabra; ] do lista ; done
              La lista de palabras que va detrás  de  in  se  expande,  generando  una  lista  de
              elementos.  La  variable  nombre  se  define como cada elemento de la lista en cada
              iteración, y lista se ejecuta cada vez. Si la palabra de in se omite, la orden  for
              ejecuta  lista  una  vez  para  cada  parámetro  posicional  que esté definido (vea
              PARÁMETROS más abajo).  El estado de retorno es el de salida de la última orden que
              se  ejecuta.   Si la expansión de los elementos después del in resulta en una lista
              vacía, no se ejecuta ninguna orden y el estado de salida es 0.

       select nombre [ in palabra; ] do lista ; done
              La lista de palabras que sigue a in se expande, generando una lista  de  elementos.
              El  conjunto  de  palabras  expandidas se muestra en la salida estándar de errores,
              cada una precedida por un número. Si la palabra del in se omite,  se  muestran  los
              parámetros  posicionales  (vea  PARÁMETROS  más  abajo).   Entonces  se  muestra el
              indicador PS3 y se lee una línea desde la entrada estándar.  Si la  línea  consiste
              en  un número correspondiente a una de las palabras mostradas, entonces el valor de
              nombre se pone a esa palabra. Si la línea está vacía, las palabras y  el  indicador
              se  muestran  de  nuevo.  Si se lee EOF, la orden se completa. Cualquier otro valor
              leída hace que nombre se ponga a un valor vacío. La línea leída  se  guarda  en  la
              variable  REPLY.   La lista se ejecuta tras cada selección hasta que se ejecute una
              orden break o return.  El estado de salida de select  es  el  de  la  última  orden
              ejecutada en lista, o cero si no se ha ejecutado ninguna orden.

       case palabra in [ ( patrón [ | patrón ] ... ) lista ;; ] ... esac
              Una  orden  case  expande  primero palabra, e intenta hacerla concordar contra cada
              patrón por turnos,  empleando  las  mismas  reglas  de  concordancia  que  para  la
              expansión  de  nombres  de  caminos  (vea Expansión de nombre de camino más abajo).
              Cuando se encuentre una concordancia, se ejecuta la lista correspondiente. Tras  la
              primera  concordancia,  no  se  intentan  más.  El  estado  de salida es cero si no
              concuerda ningún patrón. De otro modo, es el estado de salida de  la  última  orden
              ejecutada en lista.

       if lista; then lista; [ elif lista; then lista; ] ... [ else lista; ] fi
              La  lista  if se ejecuta. Si su estado de salida es cero, se ejecuta la lista then.
              De otro modo, se ejecuta por turno cada lista elif, y si su  estado  de  salida  es
              cero,  se  ejecuta  la lista then correspondiente y la orden se completa. Si no, se
              ejecuta la lista then si está presente. El estado de salida  es  el  de  la  última
              orden ejecutada, o cero si ninguna condición fue verdadera.

       while lista; do lista; done
       until lista; do lista; done
              La  orden  while  ejecuta  continuamente la lista do siempre que la última orden de
              lista devuelva un estado de salida cero. La orden until es  idéntica  a  la  while,
              excepto  en que la comprobación es al revés; la lista do se ejecuta mientras que la
              última orden en lista devuelva un estado de salida distinto de cero.  El estado  de
              salida  de  las  órdenes  while  y  until  es  el de la última orden de la lista do
              ejecutada, o cero si no se ejecutó ninguna orden.

       [ function ] nombre () { lista; }
              Esto define una función llamada nombre. El cuerpo de la  función  es  la  lista  de
              órdenes  entre { y } . Esta lista se ejecuta cada vez que se especifica nombre como
              el nombre de una orden simple. El estado de salida de  una  función  es  el  de  la
              última orden ejecutada en el cuerpo. (Vea FUNCIONES más abajo.)

COMENTARIOS

       En  un shell no interactivo, o en uno interactivo en el que la opción interactive_comments
       de la orden interna shopt está activa (vea ÓRDENES INCORPORADAS DEL SHELL más abajo),  una
       palabra  que  empiece  por # hace que esa palabra y todos los caracteres que queden en esa
       línea no sean tenidos en cuenta. Un shell interactivo sin la  opción  interactive_comments
       habilitada,  no  admite  comentarios.  La opción interactive_comments está activa de forma
       predeterminada en shells interactivos.

ENTRECOMILLADO

       El entrecomillado se emplea para quitar el significado especial para el shell  de  ciertos
       metacaracteres  o palabras. Puede emplearse para que no se traten caracteres especiales de
       forma especial, para que palabras reservadas no sean reconocidas como tales, y para evitar
       la expansión de parámetros.

       Cada uno de los metacaracteres listados a continuación bajo el epígrafe DEFINICIONES tiene
       un significado especial para el shell y deben ser protegidos o entrecomillados si  quieren
       representarse a sí mismos. Hay 3 mecanismos de protección: el carácter de escape, comillas
       simples, y comillas dobles.

       Una barra inclinada inversa no entrecomillada (\) es el carácter de escape.   Preserva  el
       valor  literal  del siguiente carácter que lo acompaña, con la excepción de <nueva-línea>.
       Si aparece un par \<nueva-línea> y la barra invertida no está ella misma  entre  comillas,
       el  \<nueva-línea> se trata como una continuación de linea (esto es, se quita del flujo de
       entrada y no se tiene efectivamente en cuenta).

       Encerrar caracteres entre apóstrofos preserva el valor literal de cada carácter entre  las
       comillas.  Una comilla simple no puede estar entre comillas simples, ni siquiera precedida
       de una barra invertida.

       Encerrar caracteres  entre  comillas  dobles  preserva  el  valor  literal  de  todos  los
       caracteres de dentro de las comillas, con la excepción de $, `, y \.  Los caracteres $ y `
       mantienen sus significados especiales  dentro  de  comillas  dobles.  La  barra  invertida
       mantiene  su  significado especial solamente cuando está seguida por uno de los siguientes
       caracteres: $, `, "", \, o <nueva-línea>.  Una  comilla  doble  puede  ser  entrecomillada
       entre otras comillas dobles precediéndola de una barra invertida.

       Los parámetros especiales * y @ tienen un significado especial cuando están entre comillas
       dobles (vea PARÁMETROS más abajo).

       Las palabras de la forma $'cadena' se tratan de forma especial. La palabra  se  expanda  a
       cadena, con los caracteres protegidos par barra invertida reemplazados según especifica el
       estándar ANSI/ISO de C. Las secuencias de escape con barra invertida, si están  presentes,
       se descodifican como sigue:
              \a     alerta (campana)
              \b     espacio-atrás
              \e     un carácter de escape (ESC)
              \f     nueva página
              \n     nueva linea
              \r     retorno de carro
              \t     tabulación horizontal
              \v     tabulación vertical
              \\     barra invertida
              \nnn   el carácter cuyo código es el valor octal nnn (de uno a tres dígitos)
              \xnnn  el carácter cuyo código es el valor hexadecimal nnn

       El  resultado  traducido es entrecomillado con comillas simples, como si el signo de dólar
       no hubiera estado presente.

       Una cadena entre comillas dobles precedida por un signo de dólar ($) hará que la cadena se
       traduzca  según  la  localización  en curso. Si ésta es C o POSIX, el signo de dólar no se
       tiene en cuenta.  Si la cadena se traduce y reemplaza, el reemplazo  se  entrecomilla  con
       comillas dobles.

PARÁMETROS

       Un  parámetro  es una entidad que almacena valores.  Puede ser un nombre, un número, o uno
       de  los  caracteres  especiales  listados  a  continuación  bajo  el  epígrafe  Parámetros
       especiales.   En lo que se refiere al shell, una variable es un parámetro identificado por
       un nombre.

       Un parámetro está definido si se le ha asignado un valor. La  cadena  vacía  es  un  valor
       válido.  Una  vez  que  una  variable  está  definida,  sólo puede quitarse de la lista de
       variables mediante la orden interna unset (vea ÓRDENES INTERNAS DEL SHELL más adelante).

       A una variable se le puede asignar un valor mediante una sentencia de la forma

              nombre=[valor]

       Si no se da el valor, a la variable se asigna la cadena vacía.  Todos  los  valores  están
       sujetos  a expansión de tilde, de parámetros y variables, de cadena, de orden, aritmética,
       y eliminación de comillas (vea EXPANSIÓN más abajo).  Si la  variable  tiene  activado  su
       atributo integer (vea declare más abajo en ÓRDENES INTERNAS DEL SHELL) entonces valor está
       sujeto a expansión aritmética incluso si no se emplea la expansión $((...)) (vea Expansión
       aritmética más adelante).  No se realiza la división de palabras, con la excepción de "$@"
       como se explica más adelante bajo el epígrafe  Parámetros  especiales.   La  expansión  de
       nombres de camino no se efectúa.

   Parámetros posicionales
       Un  parámetro  posicional  es  un  parámetro denotado por uno o más dígitos, distintos del
       simple 0. Los parámetros posicionales se asignan a partir  de  los  argumentos  del  shell
       cuando  éste  es  llamado,  y  pueden  ser reasignados mediante la orden interna set.  Los
       parámetros posicionales  no  pueden  ser  asignados  con  sentencias  de  asignación.  Los
       parámetros  posicionales  se  reemplazan  temporalmente  cuando se ejecuta una función del
       shell (vea FUNCIONES abajo).

       Cuando un parámetro posicional consistente en más de  un  solo  dígito  se  expande,  debe
       rodearse por llaves (vea EXPANSIÓN abajo).

   Parámetros especiales
       El shell trata de forma especial a ciertos parámetros. Éstos sólo pueden referenciarse; no
       se permite asignarles nada.
       *      Se expande a los parámetros posicionales, empezando  por  1.  Cuando  la  expansión
              ocurre  entre  comillas  dobles, se expande a una sola palabra con el valor de cada
              parámetro separado por el primer carácter de la variable especial  IFS.   Esto  es,
              "$*"  es  equivalente  a "$1c$2c...", donde c es el primer carácter del valor de la
              variable IFS.  Si IFS no está definida, los parámetros se separan por espacios.  Si
              IFS es la cadena vacía, los parámetros se juntan sin ningún separador.
       @      Se  expande  a  los parámetros posicionales, empezando desde 1. Cuando la expansión
              ocurre dentro de comillas dobles, cada parámetro se expande a una palabra separada.
              Esto   es,  "$@"  es  equivalente  a  "$1"  "$2"  ...   Cuando  no  hay  parámetros
              posicionales, "$@" y $@ se expanden a nada (esto es, se borran).
       #      Se expande al número en base 10 de parámetros posicionales.
       ?      Se expande al estado de la tubería más recientemente ejecutada en primer plano.
       -      Se expande a las opciones del shell activas actualmente según se hayan especificado
              en  la llamada, mediante la orden interna set, o las que haya puesto el mismo shell
              (como la opción -i).
       $      Se expande al PID del shell. En un subshell (), se expande al PID del shell actual,
              no al del subshell.
       !      Se  expande  al  PID  de  la  orden  más  recientemente  ejecutada en segundo plano
              (asíncronamente).
       0      Se expande al nombre del shell o guión del shell. Este  parámetro  se  pone  en  el
              inicio  del shell. Si bash se llama con un fichero de órdenes, $0 se pone al nombre
              de ese fichero. Si bash se arranca con la opción -c, entonces $0 se pone al  primer
              argumento  tras  la  cadena que se va a ejecutar, si hay alguno presente. Si no, se
              pone al nombre de fichero empleado para llamar a bash, como se da en  el  argumento
              cero.
       _      En  el  arranque del shell, se pone al nombre absoluto de fichero del shell o guión
              del shell que se está ejecutando, tal como se ha pasado en la lista de  argumentos.
              Subsecuentemente,  se  expande  al  último  argumento de la orden anterior, tras la
              expansión.  También se pone al nombre completo del fichero de cada orden ejecutada,
              y  se  pone en el entorno exportado a esa orden.  Cuando se está comprobando si hay
              correo nuevo, este parámetro contiene el nombre del fichero de correo o  buzón  que
              se está comprobando actualmente.

   Variables del shell
       El shell pone automáticamente las siguientes variables:

       PPID   El PID del proceso padre del shell. Esta variable es de lectura exclusiva.
       PWD    El directorio de trabajo actual como lo pone la orden cd.
       OLDPWD El directorio de trabajo anterior como lo puso la orden cd.
       REPLY  La línea de entrada leída por la orden interna read cuando no se le dan argumentos.
       UID    Se  expande  al  UID  del  usuario  en curso, puesta en el arranque del shell. Esta
              variable es de lectura exclusiva.
       EUID   Se expande al UID efectivo del usuario en curso, puesta en el arranque  del  shell.
              Esta variable es de lectura exclusiva.
       GROUPS Una  variable vector conteniendo la lista de grupos de los que el usuario actual es
              miembro. Esta variable es de lectura exclusiva.
       BASH   Se expande al nombre completo del fichero empleado para llamar a esta instancia  de
              bash.
       BASH_VERSION
              Se expande a una cadena que describe la versión de esta instancia de bash.
       BASH_VERSINFO
              Una  variable  vector  de lectura exclusiva cuyos miembros contienen información de
              versión para esta instancia de bash.  Los valores  asignados  a  los  miembros  del
              vector son como sigue:
              BASH_VERSINFO[0]        El número mayor de versión (la distribución).
              BASH_VERSINFO[1]        El número menor de versión (la versión).
              BASH_VERSINFO[2]        El nivel de parcheo.
              BASH_VERSINFO[3]        La versión de construcción.
              BASH_VERSINFO[4]        El estado de la distribución (por ejemplo, beta1).
              BASH_VERSINFO[5]        El valor de MACHTYPE.

       SHLVL  Se incrementa en uno cada vez que se arranca una nueva instancia de bash.

       RANDOM Cada vez que este parámetro sea referenciado, se genera un entero aleatorio entre 0
              y 32767. La secuencia de números aleatorios puede iniciarse asignando  un  valor  a
              RANDOM.   Si RANDOM no está definido, pierde sus propiedades especiales, incluso si
              posteriormente es redefinido.

       SECONDS
              Cada vez que este parámetro es  referenciado,  se  devuelve  en  él  el  número  de
              segundos  transcurridos desde la llamada al shell. Si se asigna un valor a SECONDS,
              el valor devuelto en posteriores referencias es el  número  de  segundos  desde  la
              asignación  más  el  valor  asignado.   Si  SECONDS  no  está  definido, pierde sus
              propiedades especiales, incluso si posteriormente es redefinido.

       LINENO Cada vez que este parámetro es referenciado, el shell sustituye un número  en  base
              10  representando  el número de línea secuencial actual (empezando por 1) dentro de
              un guión o función. Si no estamos en un guión o función, no  se  garantiza  que  el
              valor  sustituido  tenga  significado.   Si  LINENO  no  está  definido, pierde sus
              propiedades especiales, incluso si posteriormente es redefinido.

       HISTCMD
              El número de "historia", o índice en la lista "histórica", de la orden actual.   Si
              HISTCMD   no   está   definido,  pierde  sus  propiedades  especiales,  incluso  si
              posteriormente es redefinido.

       DIRSTACK
              Una variable vector (vea Vectores más abajo) que aloja los contenidos  actuales  de
              la  pila  de directorios. Los directorios aparecen en la pila en el orden en el que
              se muestran con la orden interna dirs.  La asignación a  miembros  de  este  vector
              puede  emplearse  para modificar directorios que ya estén en la pila, pero entonces
              deben  utilizarse  las  órdenes  internas  pushd  y  popd  para  añadir  y   quitar
              directorios.   La  asignación a esta variable no cambiará el directorio de trabajo.
              Si DIRSTACK no  está  definido,  pierde  sus  propiedades  especiales,  incluso  si
              posteriormente es redefinido.

       PIPESTATUS
              Una  variable  vector (vea Vectores más abajo) que contiene una lista de valores de
              estado de salida de los procesos en  la  tubería  en  primer  plano  ejecutada  más
              recientemente (que puede contener una sola orden).

       OPTARG El  valor  del  último  argumento  que es una opción procesado por la orden interna
              getopts (vea ÓRDENES INTERNAS DEL SHELL más abajo).

       OPTIND El índice del siguiente argumento a ser procesado por la orden interna getopts (vea
              ÓRDENES INTERNAS DEL SHELL más abajo).

       HOSTNAME
              Puesto automáticamente al nombre del anfitrión (computador) actual.

       HOSTTYPE
              Puesto  automáticamente  a  una  cadena  que  describe  de forma unívoca el tipo de
              máquina en la que bash se  está  ejecutando.   El  valor  predefinido  depende  del
              sistema.

       OSTYPE Puesto  automáticamente  a  una  cadena que describe el sistema operativo en el que
              bash se está ejecutando.  El valor predefinido depende del  sistema.  En  Linux  es
              "linux".

       MACHTYPE
              Puesto  automáticamente  a una cadena que describe completamente el tipo de sistema
              en el que bash se está ejecutando, en el  formato  estándar  de  GNU  cpu-compañía-
              sistema.  El valor predefinido depende del sistema.

       SHELLOPTS
              Una  lista,  de  elementos separados por dos puntos, de opciones activas del shell.
              Cada palabra en la lista es un argumento válido para  la  opción  -o  de  la  orden
              interna  set  (vea  ÓRDENES INTERNAS DEL SHELL abajo). Las opciones que aparecen en
              SHELLOPTS son aquéllas que aparecen como on en set -o.  Si esta variable está en el
              ambiente  cuando  bash empieza, cada opción del shell en la lista se activará antes
              de leer cualquier fichero de inicio.  Esta variable es de lectura exclusiva.

       El shell hace uso de las siguientes variables. En algunos  casos,  bash  asigna  un  valor
       predeterminado a una variable; estos casos se dicen abajo.

       IFS    El  Separador  Interno  de Campo que se emplea para la división de palabras tras la
              expansión y para dividir líneas en palabras con la orden interna  read.   El  valor
              predeterminado es ``<espacio><tab><nueva-línea>''.
       PATH   El  camino  de  búsqueda  para  órdenes,  programas  ejecutables.  Es  una lista de
              directorios separados por dos puntos en los cuales  el  shell  busca  órdenes  (vea
              EJECUCIÓN DE ÓRDENES más abajo). El camino predeterminado depende del sistema, y lo
              pone   el   administrador    que    instala    bash.     Un    valor    común    es
              ``/usr/local/bin:/bin:/usr/bin:.''.
       HOME   El  directorio inicial de trabajo del usuario en curso; el argumento predeterminado
              para la orden interna cd.  El valor de esta  variable  se  usa  también  cuando  se
              realiza la expansión de tilde.
       CDPATH El  camino de búsqueda para la orden cd.  Es una lista de directorios separados por
              dos puntos en los cuales el shell busca directorios destino  especificados  por  la
              orden cd.  Un valor de muestra es ``.:~:/usr''.
       BASH_ENV
              Si  este parámetro está definido cuando bash está ejecutando un guión del shell, su
              valor se interpreta como un nombre de fichero que contiene órdenes para iniciar  el
              shell,  como  en  ~/.bashrc.   El  valor  de  BASH_ENV  está  sujeto a expansión de
              parámetros,  sustitución  de  órdenes  y  expansión  aritmética,   antes   de   ser
              interpretado  como  un  nombre de fichero.  PATH no se usa para buscar el nombre de
              fichero resultante.
       MAIL   Si este parámetro está puesto a un nombre de fichero y la variable MAILPATH no está
              definida,  bash  informa  al  usuario  de  la  llegada  de  correo  en  el  fichero
              especificado.
       MAILCHECK
              Especifica cuán a menudo (en segundos) bash comprueba si hay correo nuevo. El valor
              predeterminado  es  60  s. Cuando es tiempo de comprobar si hay correo, el shell lo
              hace antes de mostrar el indicador primario. Si esta variable no está definida,  el
              shell no comprueba si hay correo nuevo.
       MAILPATH
              Una lista de nombres de fichero separados por dos puntos donde hay que comprobar si
              hay correo nuevo. El mensaje que haya que mostrar cuando llegue correo a un fichero
              particular  puede  especificarse  separando el nombre de fichero del mensaje con un
              '?'. Cuando se use en el texto del mensaje, $_ se expande al nombre del fichero  de
              correo en curso.  Ejemplo:
              MAILPATH='/var/spool/mail/bfox?"Tienes carta":~/shell-mail?"¡$_ tiene carta!"'
              Bash  proporciona  un valor predeterminado para esta variable, pero la localización
              de los ficheros de correo del usuario que emplea es dependiente del sistema  (e.g.,
              /var/spool/mail/$USER).
       PS1    El  valor  de este parámetro se expande (vea INDICADORES abajo) y se emplea como la
              cadena del indicador primario. El valor predeterminado es ``\s-\v\$ ''.
       PS2    El valor de este parámetro se expande como con PS1 y se emplea como la  cadena  del
              indicador secundario. El valor predeterminado es ``> ''.
       PS3    El  valor  de  este parámetro se emplea como el indicador para la orden select (vea
              GRAMÁTICA DEL SHELL más arriba).
       PS4    El valor de este parámetro se expande como con PS1 y el valor se imprime  antes  de
              cada  orden  que bash muestra durante una traza de ejecución. El primer carácter de
              PS4 se replica múltiples veces, tantas como sean necesarias, para indicar múltiples
              niveles de indirección. El valor predeterminado es ``+ ''.
       TIMEFORMAT
              El  valor  de  este parámetro se emplea como una cadena de formato para especificar
              cómo debe mostrarse la información de  tiempos  para  tuberías  precedidas  por  la
              palabra  reservada  time.   El  carácter % introduce una secuencia de escape que se
              expande a un valor de tiempo o a otra información.  Las secuencias de escape y  sus
              significados son como sigue; los corchetes denotan partes opcionales.
              %%        Un % literal.
              %[p][l]R  El tiempo total transcurrido en segundos.
              %[p][l]U  El número de segundos de CPU gastados en modo usuario.
              %[p][l]S  El número de segundos de CPU gastados en modo sistema.
              %P        El porcentaje de CPU, computado como (%U + %S) ÷ %R.

              La p opcional es un dígito que especifica la precisión, el número de decimales.  Un
              valor de 0 hace que no se muestre ningún decimal, ni el punto o coma decimal.  Como
              mucho  se pueden especificar tres decimales; valores de p mayores de 3 se cambian a
              3. Si p no se especifica, se usa precisamente el valor 3.

              La l opcional especifica un formato más largo,  incluyendo  minutos,  en  la  forma
              MMmSS.FFs.  El valor de p determina si se incluye o no la fracción.

              Si   esta  variable  no  está  definida,  bash  actúa  como  si  tuviera  el  valor
              $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'.  Si el valor es nulo, no se  muestra  ninguna
              información  de  tiempos.  Se añade un salto de línea al final cuando se muestra la
              cadena de formato.

       HISTSIZE
              El número de órdenes a recordar en la historia de órdenes (vea HISTORIA abajo).  El
              valor predeterminado es 500.

       HISTFILE
              El  nombre  del  fichero  en  el que se guarda la historia de órdenes (vea HISTORIA
              abajo).  El valor predeterminado es ~/.bash_history.  Si no está  definido,  no  se
              guarda la historia de órdenes cuando se acaba un shell interactivo.

       HISTFILESIZE
              El  número  máximo de líneas contenidas en el fichero de historia. Cuando se asigna
              un valor a esta variable, el fichero de historia se trunca, si  es  menester,  para
              contener no más de ese número de líneas. El valor predeterminado es 500. El fichero
              de historia se trunca también a este tamaño tras escribir en  él  cuando  un  shell
              interactivo termina.

       OPTERR Si  se  pone  al  valor  1,  bash  muestra mensajes de error generados por la orden
              interna getopts (vea ÓRDENES INTERNAS DEL SHELL abajo).  OPTERR se inicia a 1  cada
              vez que se llama al shell o cuando se ejecuta un guión del shell.

       LANG   Empleado  para determinar la categoría de localización ("escenario") para cualquier
              categoría no seleccionada específicamente con una variable de las que empiezan  por
              LC_.

       LC_ALL Esta variable tiene preferencia sobre el valor de LANG y de cualquier otra variable
              de las que empiecen por LC_ especificando una categoría de localización.

       LC_COLLATE
              Esta variable determina el orden de clasificación  empleado  cuando  se  ordene  el
              resultado  de una expansión de nombres de caminos, y determina el comportamiento de
              expresiones de rango, clases de equivalencia, y secuencias de clasificación  dentro
              de expansiones de nombres de caminos y concordancia de patrones.

       LC_CTYPE
              Esta  variable  determina  la  interpretación  de caracteres y el comportamiento de
              clases de caracteres dentro de expansiones de nombres de caminos y concordancia  de
              patrones.

       LC_MESSAGES
              Esta   variable   determina   la   localización   empleada  para  traducir  cadenas
              entrecomilladas con comillas dobles precedidas por un $.

       PROMPT_COMMAND
              Si está definido, el valor se ejecuta  como  una  orden  antes  de  mostrarse  cada
              indicador primario.

       IGNOREEOF
              Controla  la  acción  de  un shell interactivo al recibir un carácter EOF como sola
              entrada. Si está definido, el valor es el número de caracteres EOF consecutivos que
              deben  teclearse  como los primeros caracteres de una línea de entrada antes de que
              bash acabe. Si la variable existe pero no tiene un valor numérico,  o  ninguno,  el
              valor predeterminado es 10. Si no existe, EOF significa el final de la entrada para
              el shell.

       TMOUT  Si se define a un valor mayor que cero, el valor se interpreta como  el  número  de
              segundos  que  hay  que  esperar  una  entrada  después  de  mostrarse el indicador
              primario.  Bash termina después de esperar ese número  de  segundos  si  no  recibe
              ninguna entrada.

       FCEDIT El editor predeterminado para la orden interna fc.

       FIGNORE
              Una lista de sufijos separados por dos puntos que no hay que tener en cuenta cuando
              se realice una terminación de nombres de ficheros (vea READLINE abajo).  Un  nombre
              de  fichero  cuyo sufijo concuerde con una de las entradas en FIGNORE se excluye de
              la lista de nombres de ficheros a completar.  Un valor de muestra es ``.o:~''.

       GLOBIGNORE
              Una lista de patrones separados por dos puntos que definen en conjunto  de  nombres
              de  ficheros  que no hay que tener en cuenta en la expansión de nombres de caminos.
              Si un nombre de fichero que concordaba en un patrón  de  expansión  de  nombres  de
              caminos  también  concuerda  con  uno de los patrones en GLOBIGNORE, se quita de la
              lista de concordancias.

       INPUTRC
              El nombre de fichero para el de inicio  de  readline,  en  vez  del  predeterminado
              ~/.inputrc (vea READLINE abajo).

       HISTCONTROL
              Si  se  define  a un valor de ignorespace, las líneas que comiencen con un carácter
              espacio no se meten en la lista de historia. Si se pone a un valor  de  ignoredups,
              las  líneas  que  concuerden  con  la última línea de la historia, no se meten.  Un
              valor de ignoreboth combina las dos opciones.  Si no está definido, o si lo está  a
              otro  valor  distinto  de  los  de antes, todas las líneas leídas por el analizador
              léxico se guardan en la lista de la historia, sujeto esto al valor  de  HISTIGNORE.
              La  función  de  esta  variable  ha sido tomada por HISTIGNORE.  La segunda línea y
              siguientes de una orden compuesta multi-línea no se comprueban, y se  añaden  a  la
              historia sin importar el valor de HISTCONTROL.

       HISTIGNORE
              Una lista de patrones separados por dos puntos empleados para decidir qué líneas de
              órdenes deben guardarse en la lista de historia. Cada patrón se ancla al  principio
              de  la  línea  y  debe especificar la línea completamente (no se añade ningún `*').
              Cada  patrón  se  comprueba  con  la  línea  tras  aplicarse   las   comprobaciones
              especificadas  por  HISTCONTROL.  Además de los caracteres normales de concordancia
              de patrones del shell, `&' concuerda con la línea de historia anterior.  `&'  puede
              protegerse  empleando  una  barra  inversa.  Ésta  se quita antes de intentarse una
              concordancia.  La segunda línea y siguientes de una orden compuesta multi-línea  no
              se comprueban, y se añaden a la historia sin importar el valor de HISTIGNORE.

       histchars
              Los  dos o tres caracteres que controlan la expansión y separación en lexemas de la
              historia (vea EXPANSIÓN DE HISTORIA abajo).  El primer carácter es el  carácter  de
              expansión  de  historia,  el  carácter  que  señala el comienzo de una expansión de
              historia, normalmente `!'.  El segundo  carácter  es  el  carácter  de  sustitución
              rápida,  que  se  usa  como  una  abreviatura  para  reejecutar  la orden anterior,
              sustituyendo una cadena por otra en la orden. El valor predeterminado es  `^'.   El
              tercer carácter, opcional, es el carácter que indica que el resto de la línea es un
              comentario cuando se encuentra como el primer carácter de una palabra,  normalmente
              es  `#'.  El carácter de comentario de historia hace que la sustitución de historia
              se salte en el resto de palabras  de  la  línea.  No  hace  que  necesariamente  el
              analizador  léxico del shell trate al resto de la línea como un a un comentario.

       HOSTFILE
              Contiene  el  nombre  de un fichero con el mismo formato que /etc/hosts que debería
              leerse cuando el shell necesite completar un nombre de anfitrión  (computador).  El
              fichero  puede  ser  cambiado  interactivamente;  la  siguiente  vez que se intente
              completar un nombre de computador, bash añade el contenido del nuevo fichero  a  la
              base de datos ya existente.

       auto_resume
              Esta  variable  controla cómo el shell interactúa con el usuario para el control de
              trabajos. Si esta variable está definida, las órdenes simples de  una  palabra  sin
              redirección se tratan como candidatas para reanudar un trabajo existente parado. No
              se permite ninguna ambigüedad; si hay más de un trabajo que empiece con  la  cadena
              tecleada,  se  selecciona  el  trabajo al que se ha accedido más recientemente.  El
              nombre de un trabajo parado, en este contexto, es la línea de órdenes empleada para
              arrancarlo.   Si  se  define  al valor exact, la cadena suministrada debe concordar
              exactamente con el nombre de un trabajo parado; si se  define  como  substring,  la
              cadena  suministrada  necesita concordar con una subcadena del nombre de un trabajo
              parado.  El  valor  substring  proporciona  una  funcionalidad  análoga  a  la  del
              identificador  de  trabajo  %?   (vea  CONTROL  DE TRABAJOS adelante). Si se pone a
              cualquier otro valor, la cadena suministrada debe ser un prefijo del nombre  de  un
              trabajo  parado;  esto proporciona una funcionalidad análoga a la del identificador
              de trabajo %.

   Vectores
       Bash proporciona variables vectores, monodimensionales. Cualquier  variable  puede  usarse
       como  un  vector;  la  orden interna declare declarará un vector explícitamente. No hay un
       límite máximo en el tamaño de un vector, ni ningún requisito  para  que  los  miembros  se
       indexen o asignen de forma contigua. Los vectores se indexan empleando enteros y su primer
       elemento es el de índice cero, como en C.

       Un vector se crea automáticamente si se  asigna  algo  a  una  variable  con  la  sintaxis
       nombre[índice]=valor.  El índice se trata como una expresión aritmética que debe evaluarse
       a un número mayor o igual a cero. Para declarar un vector explícitamente,  emplee  declare
       -a  nombre  (vea  ÓRDENES  INTERNAS  DEL  SHELL  abajo).   También  se  acepta  declare -a
       nombre[índice], donde el índice no se tiene en cuenta.  Se  pueden  especificar  atributos
       para  una variable vector mediante las órdenes internas declare y readonly.  Cada atributo
       se aplica a cada uno de los miembros del vector.

       Se  asignan  valores  a  los  vectores  mediante  asignaciones  compuestas  de  la   forma
       nombre=(valor1  ... valorn), donde cada valor es de la forma [índice]=cadena.  Sólo cadena
       es necesario.  Si se suministra el índice entre corchetes y la asignación, se asigna a ese
       índice;  si no, el índice del elemento asignado es el último índice al que la sentencia le
       asignó algo, más uno. Los índices empiezan en cero. Esta sintaxis  también  la  acepta  la
       orden interna declare.  Se puede asignar a los elementos individuales del vector empleando
       la sintaxis nombre[índice]=valor, ya presentada antes.

       Cualquier elemento de un  vector  puede  referenciarse  mediante  ${nombre[índice]}.   Las
       llaves  son  necesarias  para evitar conflictos con la expansión de nombres de caminos. Si
       índice es @ o *, la palabra se expande a todos los  miembros  de  nombre.   Estos  índices
       difieren  solamente  cuando  la  palabra aparece entre comillas dobles. Si la palabra está
       entre comillas dobles, ${nombre[*]} se expande a una sola palabra con  el  valor  de  cada
       miembro  del  vector  separados  por  el  primer  carácter  de la variable especial IFS, y
       ${nombre[@]} expande cada elemento de  nombre  a  una  palabra  separada.  Cuando  no  hay
       miembros del vector, ${nombre[@]} se expande a nada. Esto es análogo a la expansión de los
       parámetros especiales * y @ (vea Parámetros  especiales  arriba).   ${#nombre[índice]}  se
       expande a la longitud de ${nombre[índice]}.  Si índice es * o @, la expansión es el número
       de elementos del vector.  Referenciar una variable vector  sin  índice  es  equivalente  a
       referenciar el elemento cero.

       La orden interna unset se emplea para destruir vectores.  unset nombre[índice] destruye el
       elemento del vector con el índice especificado.  unset nombre, donde nombre es un  vector,
       o unset nombre[índice], donde índice es * o @, borra el vector entero.

       Las  órdenes  internas  declare,  local,  y  readonly  aceptan cada una una opción -a para
       especificar un vector (array). La orden interna read acepta una -a para asignar una  lista
       de  palabras  leídas  desde  la  entrada  estándar a un vector. Las órdenes internas set y
       declare muestran valores de un vector en una manera tal que les permite  ser  reutilizadas
       como asignaciones.

EXPANSIÓN

       La  expansión  se  realiza en la línea de órdenes una vez que la orden ha sido dividida en
       palabras. Hay siete  clases  de  expansión:  expansión  de  llaves,  expansión  de  tilde,
       expansión de parámetro y variable, sustitución de orden, expansión aritmética, división de
       palabras, expansión de nombre de camino.

       La orden de las expansiones es: expansión de llaves, de tilde, de  parámetro,  variable  y
       aritmética,  y sustitución de orden (hechas de izquierda a derecha), división de palabras,
       y expansión de nombre de camino.

       En sistemas que puedan admitirla, hay una expansión adicional disponible:  sustitución  de
       proceso.

       Sólo la expansión de llaves, división de palabras, y expansión de nombre de camino, pueden
       cambiar el número de palabras de la expansión; las otras expanden  una  palabra  simple  a
       otra  palabra  simple.  Las  únicas  excepciones  a  esto  son  las  expansiones de "$@" y
       "${nombre[@]}" como se ha explicado más arriba (vea PARÁMETROS).

   Expansión de llaves
       La expansión de llaves es un mecanismo por el cual pueden generarse  cadenas  arbitrarias.
       Este mecanismo es similar a la expansión de nombre de camino, pero los nombres de ficheros
       no necesitan existir. Los patrones a ser expandidos con la expansión de  llaves  toman  la
       forma  de un preámbulo opcional seguido por una serie de cadenas separadas por comas entre
       un par de llaves, seguido por un post scriptum opcional.  El preámbulo sirve de prefijo  a
       cada  cadena  de  entre  las  llaves,  y  el  post  scriptum  se añade luego a cada cadena
       resultante, expandiendo de izquierda a derecha.

       Las expansiones de llaves pueden anidarse. Los resultados de cada cadena expandida  no  se
       ordenan;  se preserva el orden de izquierda a derecha. Por ejemplo, a{d,c,b}e se expande a
       `ade ace abe'.

       La expansión de llaves se realiza antes que cualquier otra, y cualquier carácter  especial
       para  otras  expansiones  se  preserva en el resultado. Es estrictamente textual.  Bash no
       aplica ninguna interpretación sintáctica al contexto de la expansión ni al texto entre las
       llaves.

       Una  expansión  de  llaves correctamente formada debe contener llaves de apertura y cierre
       sin entrecomillar, y por lo menos una  coma  sin  entrecomillar.  Cualquier  expansión  de
       llaves  formada incorrectamente se deja tal cual. Una { o , puede protegerse con una barra
       invertida para evitar que sea considerada como parte de una expansión de llaves.

       Esta construcción se emplea normalmente como una abreviatura cuando el  prefijo  común  de
       las cadenas a generar es mayor que en el ejemplo de antes:

              mkdir /usr/local/src/bash/{old,new,dist,bugs}
       o
              chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

       La  expansión de llaves introduce una pequeña incompatibilidad con versiones históricas de
       sh.  sh no trata especialmente a las llaves de apertura  o  cierre  cuando  aparecen  como
       parte  de  una palabra, y las deja en la entrada.  Bash quita las llaves de palabras, como
       una consecuencia de la expansión de llaves. Por ejemplo, una palabra introducida a sh como
       fichero{1,2}  aparece  así  mismo en la entrada. La misma palabra se muestra como fichero1
       fichero2 tras la expansión hecha por bash.  Si se desea una  compatibilidad  estricta  con
       sh, arranque bash con la opción +B o inhabilite la expansión de llaves con la opción +B de
       la orden interna set (vea ÓRDENES INTERNAS DEL SHELL abajo).

   Expansión de tilde
       Si una palabra comienza con un carácter tilde de la ñ sin entrecomillar (`~'),  todos  los
       caracteres  que  precedan  a  la  primera  barra  inclinada sin entrecomillar (o todos los
       caracteres,  si  no  hay  ninguna  barra  inclinada  sin  proteger),  se   consideran   un
       prefijo-tilde.  Si  ninguno  de  los  caracteres en el prefijo-tilde están protegidos, los
       caracteres en el prefijo-tilde que siguen a la tilde se tratan como un posible  nombre  de
       entrada  de  usuario  (login).   Si este nombre de entrada es la cadena vacía, la tilde se
       reemplaza con el valor del parámetro del  shell  HOME.   Si  HOME  no  está  definida,  se
       sustituye  en su lugar el directorio de trabajo inicial del usuario que está ejecutando el
       shell.  De otra forma, el prefijo-tilde se reemplaza con el directorio de trabajo  inicial
       (de casa) asociado con el nombre de entrada especificado.

       Si  el  prefijo-tilde  es  un  `~+',  el  valor  de la variable del shell PWD reemplaza al
       prefijo-tilde.  Si el prefijo-tilde es un `~-', el valor de la variable del shell  OLDPWD,
       si  está  definido,  se sustituye.  Si los caracteres que siguen a la tilde en el prefijo-
       tilde consisten en un número N, prefijado opcionalmente por un `+' o un `-',  el  prefijo-
       tilde  se  reemplaza  con  el  elemento correspondiente de la pila de directorios, como lo
       mostraría la orden interna dirs llamada con  el  prefijo-tilde  como  argumento.   Si  los
       caracteres  tras  la  tilde  en  el prefijo-tilde consisten en un número sin un `+' ni `-'
       iniciales, se supone `+'.

       Si el nombre de entrada es inválido, o si la expansión de tilde falla, la palabra se  deja
       tal cual.

       A  cada  asignación  de  variable  se  comprueba  si  hay prefijos-tilde sin entrecomillar
       inmediatamente tras un : o un =.  En estos casos, la  expansión  de  tilde  también  tiene
       lugar.   Consecuentemente, uno puede usar nombres de ficheros con tildes en asignaciones a
       PATH, MAILPATH, y CDPATH, y el shell asigna el valor expandido.

   Expansión de parámetro
       El carácter `$' introduce la expansión de parámetro, sustitución  de  orden,  o  expansión
       aritmética.  El  nombre de parámetro o símbolo a ser expandido puede estar encerrado entre
       llaves, que son opcionales pero sirven para proteger a la  variable  en  la  expansión  de
       caracteres que la sigan y puedan interpretarse como parte de su nombre.

       Cuando  se  empleen  llaves,  la  de  cierre  es la primera `}' no protegida con una barra
       invertida o en una  cadena  entrecomillada,  y  no  dentro  de  una  expansión  aritmética
       empotrada, sustitución de orden, o expansión de parámetro.

       ${parámetro}
              Se  sustituye  el  valor  de parámetro.  Se requieren llaves cuando parámetro es un
              parámetro posicional de más de un dígito, o cuando parámetro viene seguido  por  un
              carácter que no debe interpretarse como parte de su nombre.

       Si  el  primer carácter de parámetro es un signo de cierre de exclamación, se introduce un
       nivel de indirección de variable.  Bash emplea el valor de la variable  formada  a  partir
       del  resto  de  parámetro como el nombre de la variable; luego, esta variable se expande y
       ese valor se emplea en el resto de la sustitución, en vez del propio valor  de  parámetro.
       Esto se conoce como expansión indirecta.

       En  cada  uno de los casos anteriores, palabra está sujeta a expansión de tilde, expansión
       de parámetro, sustitución de orden, y  expansión  aritmética.  Cuando  no  se  realiza  la
       expansión  de  subcadena,  bash  comprueba  si un parámetro está sin definir o es nulo; si
       omitimos los dos puntos la comprobación sólo es para la no definición del parámetro.

       ${parámetro:-palabra}
              Emplear valores predeterminados.  Si parámetro no está definido o  está  vacío,  se
              sustituye  la  expansión  de  palabra.   De  otro  modo,  se  sustituye el valor de
              parámetro.
       ${parámetro:=palabra}
              Asignar valores predeterminados.  Si parámetro no  está  definido  o  es  nulo,  la
              expansión  de  palabra  se  asigna  a  parámetro.   Luego, el valor de parámetro se
              sustituye. No se puede asignar nada de esta manera a los parámetros posicionales ni
              a los especiales.
       ${parámetro:?palabra}
              Muestra  un error si no está definido o está vacío.  Si parámetro es nulo o no está
              definido, la expansión de palabra (o un mensaje a tal efecto  si  palabra  no  está
              presente)  se  escribe  en  la  salida  estándar  de  errores  y el shell, si no es
              interactivo, acaba. De otra manera, se sustituye el valor de parámetro.
       ${parámetro:+palabra}
              Emplear un valor alternativo.  Si parámetro está vacío o no está  definido,  no  se
              sustituye nada; de otro modo, se sustituye la expansión de palabra.
       ${parámetro:desplazamiento}
       ${parámetro:desplazamiento:longitud}
              Expansión  de subcadena.  Expande hasta longitud caracteres de parámetro, empezando
              en los caracteres especificados por desplazamiento.  Si se omite  la  longitud,  se
              expande  a  la  subcadena  de  parámetro, empezando en el carácter especificado por
              desplazamiento.   longitud  y  desplazamiento  son  expresiones  aritméticas   (vea
              EVALUACIÓN  ARITMÉTICA  más  abajo).   longitud  debe evaluarse a un número mayor o
              igual a cero.  Si desplazamiento se evalúa a un número menor que cero, el valor  se
              emplea  como un desplazamiento desde el final del valor de parámetro.  Si parámetro
              es @, el resultado es longitud parámetros posicionales empezando en desplazamiento.
              Si  parámetro  es  un nombre de vector indexado por @ o *, el resultado es longitud
              miembros del vector empezando con ${parámetro[desplazamiento]}.  La  indexación  de
              la  subcadena  empieza por cero a menos que se empleen los parámetros posicionales,
              en cuyo caso empieza por 1.

       ${#parámetro}
              Se sustituye la longitud en caracteres del valor de parámetro.  Si parámetro es * o
              @, el valor sustituido es el número de parámetros posicionales.  Si parámetro es un
              nombre de vector indexado por * o @, el valor sustituido es el número de  elementos
              en el vector.

       ${parámetro#palabra}
       ${parámetro##palabra}
              La  palabra  se  expande  para  producir un patrón lo mismo que en una expansión de
              nombre de camino. Si el patrón concuerda con el principio del valor  de  parámetro,
              entonces  el  resultado  de  la expansión es el valor expandido de parámetro con el
              patrón más corto que concuerde (el  caso  ``#)  o  con  el  patrón  más  largo  que
              concuerde  (el  caso  ``##'')  eliminado.   Si  parámetro es @ o *, la operación de
              borrado del patrón se aplica a cada parámetro posicional por turnos, y la expansión
              es la lista resultante.  Si parámetro es una variable vector indexada con @ o *, la
              operación de borrado del patrón se aplica a cada miembro del vector por orden, y la
              expansión es la lista resultante.

       ${parámetro%palabra}
       ${parámetro%%palabra}
              La  palabra se expande para producir un patrón justo como en la expansión de nombre
              de camino.  Si el patrón concuerda con una porción del final del valor expandido de
              parámetro, entonces el resultado de la expansión es el valor expandido de parámetro
              con el patrón más corto que concuerde (el caso ``%'')  o  el  más  largo  (el  caso
              ``%%'')  borrado.   Si  parámetro  es  @ o *, la operación de borrado del patrón se
              aplica a  cada  parámetro  posicional  por  orden,  y  la  expansión  es  la  lista
              resultante.   Si  parámetro es una variable vector indexada por @ o *, la operación
              de borrado del patrón se aplica a cada miembro del vector por orden, y la expansión
              es la lista resultante.

       ${parámetro/patrón/cadena}
       ${parámetro//patrón/cadena}
              El  patrón  se expande para producir un patrón justo como en la expansión de nombre
              de camino.  parámetro se expande y la concordancia más larga de patrón contra  este
              valor  se  reemplaza por cadena.  En la primera forma, sólo se reemplaza la primera
              concordancia.  La segunda forma hace que  todas  las  concordancias  de  patrón  se
              reemplacen con cadena.  Si patrón empieza por #, debe concordar con el principio de
              la cadena.  Si patrón empieza por %, debe concordar con el final de la cadena.   Si
              cadena está vacía, las concordancias de patrón se borran y el / que sigue al patrón
              puede omitirse.  Si parámetro es @ o *, la operación de  sustitución  se  aplica  a
              cada  parámetro  posicional  por  orden, y la expansión es la lista resultante.  Si
              parámetro es una variable vector indexada por @ o *, la operación de sustitución se
              aplica a cada miembro del vector por orden, y la expansión es la lista resultante.

   Sustitución de orden
       La sustitución de orden permite a la salida de una orden reemplazar al nombre de la orden.
       Hay dos formas:

              $(orden)
       u
              `orden`

       Bash realiza la expansión ejecutando orden y reemplazando la sustitución de orden  con  la
       salida  estándar  de  la orden, quitando los saltos de línea finales.  Los saltos de línea
       empotrados no se borran, pero pueden ser eliminados durante la división de  palabras.   La
       sustitución  de orden $(cat fichero) puede reemplazarse por lo equivalente pero más rápido
       $(< fichero).

       Cuando se emplea la forma de sustitución al viejo estilo con  las  comillas  inversas,  la
       barra  invertida  mantiene su significado literal excepto cuando es seguida por $, `, o \.
       La primera comilla inversa no precedida por una barra invertida termina la sustitución  de
       orden.   Cuando  se  emplea  la  forma $(orden), todos los caracteres entre los paréntesis
       forman parte de la orden; ninguno se trata especialmente.

       Las sustituciones de orden pueden anidarse. Para anidar  cuando  se  emplee  la  forma  de
       comillas inversas, proteja las comillas inversas internas con barras inversas.

       Si  la  sustitución  aparece  dentro  de las dobles comillas, la división de palabras y la
       expansión de nombres no se realiza en los resultados.

   Expansión aritmética
       La expansión aritmética permite la evaluación de una expresión aritmética y la sustitución
       del resultado. El formato para la expansión aritmética es:

              $((expresión))

       La  expresión  se  trata  como  si estuviera entre comillas dobles, pero un signo de doble
       comilla dentro de los paréntesis no se trata  especialmente.   Todos  los  lexemas  en  la
       expresión  están  sujetos  a  expansión  de parámetro, expansión de cadena, sustitución de
       orden, y eliminación de comillas.  Las sustituciones aritméticas pueden anidarse.

       La evaluación se realiza de  acuerdo  a  las  reglas  listadas  más  abajo  en  EVALUACIÓN
       ARITMÉTICA.   Si  expresión  no es válida, bash imprime un mensaje indicando el fallo y no
       ocurre ninguna sustitución.

   Sustitución de proceso
       La sustitución de proceso se admite en sistemas que acepten tuberías con nombre (FIFOs)  o
       el  método  /dev/fd  de  nombrar  ficheros  abiertos.   Toma una de las formas siguientes:
       <(lista) o >(lista).  El proceso lista se ejecuta con su entrada o salida conectada  a  un
       FIFO  o a algún fichero en /dev/fd.  El nombre de este fichero se pasa como argumento a la
       orden en curso como el resultado de la expansión. Si se emplea la forma >(lista), escribir
       en  el  fichero  proporciona  la  entrada  para lista.  Si se emplea la forma <(lista), el
       fichero pasado como argumento deberá leerse para obtener la salida de lista.

       Cuando esté disponible, se realiza  la  sustitución  de  proceso  simultáneamente  con  la
       expansión de parámetro y variable, sustitución de orden y expansión aritmética.

   División de palabras
       El  shell  examina  los  resultados  de  la expansión de parámetro, sustitución de orden y
       expansión aritmética que no ocurrieron dentro de comillas dobles para realizar la división
       de palabras.

       El  shell  trata  cada carácter de IFS como un delimitador, y divide los resultados de las
       otras expansiones en palabras separadas por estos caracteres. Si IFS no está  definido,  o
       su  valor  es  exactamente  <espacio><tab><nueva-línea>, el valor predeterminado, entonces
       cualquier secuencia de caracteres de IFS sirve para delimitar palabras. Si IFS tiene algún
       otro  valor,  entonces  las secuencias de los caracteres blancos espacio y tabulador no se
       tienen en cuenta al principio y al final de la palabra, siempre que el carácter de espacio
       en  blanco  esté  en el valor de IFS (un carácter de espacio en blanco de IFS).  Cualquier
       carácter en IFS que no sea espacio en blanco de  IFS,  junto  con  cualquier  carácter  de
       espacio  en  blanco  adyacente  de IFS, delimita un campo.  Una secuencia de caracteres de
       espacio en blanco de IFS también se trata como un delimitador.  Si  el  valor  de  IFS  es
       nulo, no se realiza la división de palabras.

       Los argumentos nulos explícitos ("" o '') se mantienen. Los argumentos nulos no protegidos
       implícitos, resultantes de la expansión de parámetros que no tienen valores, se  eliminan.
       Si  un parámetro sin ningún valor se expande dentro de comillas dobles, el resultado es un
       argumento nulo, y es mantenido.

       Observe que si no hay expansión, tampoco se realiza la división de palabras.

   Expansión de nombre de camino
       Tras la división de palabras, a menos que la opción -f  esté  puesta,  bash  examina  cada
       palabra  buscando  los  caracteres  *,  ?,  (,  y  [.  Si uno de estos caracteres aparece,
       entonces la palabra se considera como un patrón, y se reemplaza  por  una  lista  ordenada
       alfabéticamente  de nombres de ficheros que concuerden con el patrón.  Si no se encuentran
       nombres de ficheros concordantes, y la opción del shell nullglob  está  deshabilitada,  la
       palabra  se  deja  tal  cual.   Si  la opción nullglob está puesta, y no ha habido ninguna
       concordancia, la palabra se elimina.  Si la opción del shell nocaseglob  está  puesta,  la
       búsqueda  de  la  concordancia  se  realiza sin importar si los caracteres alfabéticos son
       letras mayúsculas o minúsculas.  Cuando un patrón se  usa  para  expansión  de  nombre  de
       camino, el carácter ``.''  al principio de un nombre o inmediatamente después de una barra
       inclinada debe concordar explícitamente, a menos que  esté  puesta  la  opción  del  shell
       dotglob.   En  la concordancia de un nombre de camino, el carácter de barra inclinada debe
       siempre coincidir explícitamente.  En otros casos, el carácter ``.''  no se trata de forma
       especial.   Vea  la  descripción de shopt más abajo en ÓRDENES INTERNAS DEL SHELL para una
       descripción de las opciones del shell nocaseglob, nullglob, y dotglob.

       La variable del shell GLOBIGNORE puede utilizarse para restringir el conjunto  de  nombres
       de  ficheros  que  concuerden  con un patrón.  Si GLOBIGNORE está definido, cada nombre de
       fichero concordante que también coincida con uno de los patrones en GLOBIGNORE se quita de
       la  lista  de concordancias.  Los nombres de fichero ``.''  y ``..''  nunca son tenidos en
       cuenta, incluso cuando GLOBIGNORE esté puesto. Sin embargo, definir  GLOBIGNORE  tiene  el
       efecto  de  activar  la  opción  del shell dotglob, de modo que todos los otros nombres de
       fichero que comiencen con un ``.''  concordarán.  Para obtener el  comportamiento  antiguo
       de  no  hacer caso de nombres de ficheros que comienzan con un ``.'', haga que ``.*''  sea
       uno de los patrones de GLOBIGNORE.  La opción dotglob está deshabilitada cuando GLOBIGNORE
       no está definido.

       Patrones

       Cualquier  carácter  que  aparezca  en  un  patrón, aparte de los especiales descritos más
       adelante, concuerda consigo mismo. El carácter NUL  no  puede  estar  en  un  patrón.  Los
       caracteres  de patrón especiales deben protegerse si han de concordar literalmente consigo
       mismos.

       Los caracteres de patrón especiales tienen los siguientes significados:

       *      Concuerda con cualquier cadena de caracteres, incluida la cadena vacía.
       ?      Concuerda con un solo carácter cualquiera.
       [...]  Concuerda con uno de los caracteres entre corchetes. Un par de caracteres separados
              por  un signo menos denota un rango; cualquier carácter léxicamente entre esos dos,
              incluidos, concuerda. Si el primer carácter tras el [ es un !  o un ^, entonces  la
              concordancia es con cualquier carácter de los que no estén entre los corchetes.  Un
              - puede representarse para la concordancia incluyéndolo como  el  primer  o  último
              carácter  del  conjunto.   Un ] puede hacerse concordar incluyéndolo como el primer
              carácter del conjunto.

              Dentro de [ y ], se pueden especificar clases de caracteres  mediante  la  sintaxis
              [:clase:],  donde  clase  es  una de las siguientes clases definidas en el estándar
              POSIX.2:
              alnum alpha ascii blank cntrl digit graph lower print punct space upper xdigit
              Una clase de caracteres concuerda con  cualquier  carácter  que  pertenezca  a  esa
              clase.

              Dentro  de  [  y  ],  una  clase  de equivalencia se puede especificar empleando la
              sintaxis [=c=], que concuerda con  todos  los  caracteres  con  el  mismo  peso  de
              clasificación (tal como lo defina la localización en curso) que el carácter c.

              Dentro  de [ y ], la sintaxis [.símbolo.] concuerda con el símbolo de clasificación
              símbolo.

       Si la opción del shell extglob se activa usando  la  orden  interna  shopt,  se  reconocen
       algunos  operadores  de patrones extendidos. En la siguiente descripción, una lista-patrón
       es una lista de uno o  más  patrones  separados  por  un  |.  Se  pueden  formar  patrones
       compuestos usando uno o más de los siguientes sub-patrones:

              ?(lista-patrón)
                     Concuerda con ninguna o una ocurrencia de los patrones dados
              *(lista-patrón)
                     Concuerda con ninguna o más ocurrencias de los patrones dados
              +(lista-patrón)
                     Concuerda con una o más ocurrencias de los patrones dados
              @(lista-patrón)
                     Concuerda exactamente con uno de los patrones dados
              !(lista-patrón)
                     Concuerda con cualquier cosa excepto con uno de los patrones dados

   Eliminación de comillas
       Tras  las  expansiones  precedentes,  todas  las  ocurrencias  no  entrecomilladas  de los
       caracteres \, ', y " que no resulten de una de las expansiones anteriores, se eliminan.

REDIRECCIÓN

       Antes de que se ejecute una orden, su entrada y salida pueden ser redirigidas  usando  una
       notación especial interpretada por el shell.  La redirección también se puede emplear para
       abrir y cerrar ficheros en el entorno de ejecución del shell en curso. Los  operadores  de
       redirección siguientes pueden preceder o aparecer en cualquier sitio de una orden simple o
       pueden ir detrás de una orden.  Las redirecciones se  procesan  en  el  orden  en  el  que
       aparecen, de izquierda a derecha.

       En  las  descripciones  siguientes,  si se omite el número del descriptor de fichero, y el
       primer carácter del operador de redirección es <, la redirección se refiere a  la  entrada
       estándar  (descriptor  de fichero 0). Si el primer carácter del operador de redirección es
       >, la redirección se refiere a la salida estándar (descriptor de fichero 1).

       La palabra tras el operador de redirección en las descripciones siguientes, a menos que se
       diga  otra  cosa,  está  sujeta a la expansión de llaves, expansión de tilde, expansión de
       parámetro,  sustitución  de  orden,  expansión  aritmética,  eliminación  de  comillas,  y
       expansión  de  nombre  de  camino.  Si se expande a más de una palabra, bash informa de un
       error.

       Observe que el orden de las redirecciones es significativo. Por ejemplo, la orden

              ls > listadir 2>&1

       dirige la salida estándar normal y la de errores, ambas, al fichero listadir, mientras que
       la orden

              ls 2>&1 > listadir

       dirige  solamente  la  salida  estándar  al  fichero listadir, porque la salida de errores
       estándar se ha duplicado como salida estándar antes de que ésta se redirigiera a listadir.

       Un fallo en la apertura o creación de un fichero hace que la redirección fracase.

   Redirección de la entrada
       La redirección de la entrada hace que el fichero cuyo nombre resulte de  la  expansión  de
       palabra  se  abra  para  lectura  en  el  descriptor  de  fichero n, o la entrada estándar
       (descriptor de fichero 0) si no se especificó n.

       El formato general para la redirección de la entrada es:

              [n]<palabra

   Redirección de la salida
       la redirección de la salida hace que el fichero cuyo nombre resulte  de  la  expansión  de
       palabra  se  abra  para  escritura  en  el  descriptor  de fichero n, o la salida estándar
       (descriptor de fichero 1) si n no se especificó. Si el  fichero  no  existe  se  crea;  si
       existe se trunca a longitud cero, se vacía.

       El formato general para la redirección de la salida es:

              [n]>palabra

       Si  el operador de redirección es >, y la opción noclobber de la orden interna set ha sido
       activada, la redirección fallará si el nombre de fichero resultante  de  la  expansión  de
       palabra existiera y fuera un fichero regular.  Si el operador de redirección es >|, o es >
       y la opción noclobber de la orden interna set no está activada, la redirección se  intenta
       incluso si el fichero nombrado por palabra existe.

   Añadir a la salida redirigida
       La  redirección  de  la salida en esta forma hace que el fichero cuyo nombre resulte de la
       expansión de palabra se abra para añadir en el  descriptor  de  fichero  n,  o  la  salida
       estándar  (descriptor  de  fichero  1)  si n no se especificó. Si el fichero no existe, se
       crea.

       El formato general para añadir a la salida es:

              [n]>>palabra

   Redirección de la salida estándar normal y de errores
       Bash permite que ambas salidas estándares, la normal (descriptor de fichero  1)  y  la  de
       errores  (descriptor  de  fichero  2)  se  redirijan  hacia  el fichero cuyo nombre sea la
       expansión de palabra con esta construcción.

       hay dos formatos para la redirección de la salida estándar y la salida de errores:

              &>palabra
       y
              >&palabra

       De las dos formas, es preferible la primera.  Ésta es semánticamente equivalente a

              >palabra 2>&1

   Documentos internos
       Este tipo de redirección instruye al shell a leer la entrada  desde  la  fuente  en  curso
       hasta  que  vea  una línea que contenga solamente palabra (sin blancos detrás).  Todas las
       líneas leídas hasta ese punto se emplean como la entrada estándar de una orden.

       El formato de los documentos internos es como sigue:

              <<[-]palabra
                               documento-interno
              delimitador

       No se realiza la expansión de parámetro, sustitución de  orden,  expansión  de  nombre  de
       camino  ni  expansión  aritmética  en  palabra.   Si  cualquier  carácter  de palabra está
       entrecomillado, el delimitador es el resultado de la eliminación de comillas en palabra, y
       las  líneas  en  el  documento interno no se expanden.  Si palabra no está entrecomillada,
       todas las líneas del documento interno están sujetas a expansión de parámetro, sustitución
       de  orden  y expansión aritmética. En el último caso, el par \<nueva-línea> no se tiene en
       cuenta, y debe emplearse \ para proteger los caracteres \, $, y `.

       Si el operador de redirección es <<-, entonces se quitan de las líneas de la entrada todos
       los  caracteres  de  tabulación iniciales, así como de  la línea que contiene delimitador.
       Esto permite que los documentos internos dentro de guiones del shell se sangren de  manera
       natural.

   Duplicación de descriptores de fichero
       El operador de redirección

              [n]<&palabra

       se  emplea para duplicar descriptores de ficheros de entrada.  Si palabra se expande a uno
       o más dígitos, el descriptor de fichero denotado por n se  hace  ser  una  copia  de  este
       descriptor  de fichero.  Si los dígitos en palabra no especifican un descriptor de fichero
       abierto para entrada, se produce un error de redirección.  Si palabra se evalúa  a  -,  el
       descriptor  de  fichero  n se cierra. Si n no se especifica, se emplea la entrada estándar
       (descriptor de fichero 0).

       El operador

              [n]>&palabra

       se emplea similarmente para duplicar descriptores de  ficheros  de  salida.  Si  n  no  se
       especificó,  se  emplea  la  salida estándar (descriptor de fichero 1).  Si los dígitos en
       palabra no especifican un descriptor de fichero abierto para salida, se produce  un  error
       de redirección.  Como un caso especial, si n se omite, y palabra no se expande a uno o más
       dígitos, se redirigen la salida estándar y la salida estándar de errores como se describió
       con anterioridad.

   Apertura de descriptores de ficheros para lectura y escritura
       El operador de redirección

              [n]<>palabra

       hace  que  el fichero cuyo nombres sea la expansión de palabra se abra para lectura y para
       escritura en el descriptor de fichero n, o  en  el  descriptor  de  fichero  0  si  no  se
       especifica n.  Si el fichero no existe, se crea.

ALIAS

       Los  alias  permiten  que una cadena se sustituya por una palabra cuando se emplee como la
       primera palabra de una orden simple.  El shell mantiene una  lista  de  alias  que  pueden
       ponerse  y  quitarse  con  las  órdenes internas alias y unalias (vea ÓRDENES INTERNAS DEL
       SHELL abajo).   Se  mira  a  ver  si  la  primera  palabra  de  cada  orden,  si  no  está
       entrecomillada,  tiene  un  alias.  Si  es así, cada palabra se reemplaza con el texto del
       alias. El nombre del alias y el texto  de  reemplazo  pueden  contener  cualquier  entrada
       válida  para  el shell, incluyendo los metacaracteres listados arriba, con la excepción de
       que el nombre del alias no puede contener un =. La primera palabra del texto de  reemplazo
       se  comprueba  si es un alias, pero si es un alias idéntico al que se está expandiendo, no
       se expande una segunda vez. Esto significa que uno puede poner un alias ls a  ls  -F,  por
       ejemplo,  y  bash  no intenta expandir recursivamente el texto de reemplazo.  Si el último
       carácter del valor del alias es un blanco, entonces la siguiente palabra de la  orden  que
       sigue al alias también se mira para la expansión de alias.

       Los alias se crean y listan con la orden alias, y se quitan con la orden unalias.

       No  hay  ningún  mecanismo  para  poder  usar  argumentos  en el texto de reemplazo. Si se
       necesitan, debería emplearse mejor una función del shell.

       Los alias no se expanden cuando el shell no es interactivo, a menos que se haya puesto  la
       opción  expand_aliases  mediante  shopt (vea la descripción de shopt bajo ÓRDENES INTERNAS
       DEL SHELL abajo).

       Las reglas que conciernen a la definición y uso de los  alias  son  algo  confusas.   Bash
       siempre lee por lo menos una línea completa de entrada antes de ejecutar cualquiera de las
       órdenes de esa línea. Los alias se expanden cuando se lee una orden, no cuando se ejecuta.
       Por  lo  tanto,  una  definición de alias que aparezca en la misma línea que otra orden no
       tiene efecto hasta que se lea la siguiente línea de entrada.  Las órdenes que sigan  a  la
       definición  de  alias  en  esa  línea  no  se  ven  afectadas  por  el  nuevo alias.  Este
       comportamiento también hay que tenerlo en cuenta cuando se ejecutan funciones.  Los  alias
       se  expanden  cuando  se  lee  una definición de función, no cuando la función se ejecuta,
       porque una definición de función es en sí misma una orden  compuesta.  Como  consecuencia,
       los  alias  definidos en una función no están disponibles hasta después de que esa función
       se ejecute. Para asegurarse,  ponga  siempre  las  definiciones  de  alias  en  una  línea
       separada, y no emplee la orden alias en órdenes compuestas.

       Para casi cualquier propósito, los alias pueden sustituirse por funciones del shell.

FUNCIONES

       Una  función del shell, definida como se describió anteriormente bajo GRAMÁTICA DEL SHELL,
       guarda una serie de órdenes para una ejecución posterior.  Las funciones se ejecutan en el
       contexto  del  shell  en  curso;  no  se crea ningún nuevo proceso para interpretarlas (en
       contraste con la ejecución de un guión del shell).  Cuando una  función  se  ejecuta,  los
       argumentos  de  la  función  se  convierten  en  los  parámetros  posicionales  durante su
       ejecución. El parámetro especial # se actualiza para  reflejar  el  cambio.  El  parámetro
       posicional  0  permanece  intacto.  Todos  los demás aspectos del entorno de ejecución del
       shell son idénticos entre una función y quien la llama con la excepción de que  la  trampa
       DEBUG  (vea  la  descripción  de la orden interna trap bajo ÓRDENES INTERNAS DEL SHELL más
       adelante) no se hereda.

       Variables  locales  a  la  función  se  pueden  declarar  con  la  orden  interna   local.
       Normalmente,  las  variables y sus valores se comparten entre la función y quien la llama,
       como variables globales.

       Si se ejecuta la orden interna return en una función, éste se  acaba  y  la  ejecución  se
       reanuda  con  la  siguiente  orden  tras  la  llamada  a la función. Cuando una función se
       completa, los valores de  los  parámetros  posicionales  y  el  parámetro  especial  #  se
       restauran a los valores que tenían antes de la ejecución de la función.

       Los  nombres de función y sus definiciones pueden listarse con la opción -f de las órdenes
       internas declare o typeset.  La opción -F de  declare  o  typeset  listará  solamente  los
       nombres  de  las funciones.  Las funciones pueden exportarse de modo que los subshells las
       tengan definidas automáticamente con la opción -f de la orden interna export.

       Las funciones pueden ser recursivas. No se impone ningún límite en el número  de  llamadas
       recursivas.

EVALUACIÓN ARITMÉTICA

       El  shell permite que se evalúen expresiones aritméticas, bajo ciertas circunstancias (vea
       la orden interna let y Expansión aritmética).  La evaluación se hace  con  enteros  largos
       sin comprobación de desbordamiento, aunque la división por 0 se atrapa y se señala como un
       error. La lista siguiente de operadores se  agrupa  en  niveles  de  operadores  de  igual
       precedencia.  Los niveles se listan en orden de precedencia decreciente.

       - +    menos y más unarios
       ! ~    negación lógica y de bits
       **     exponenciación
       * / %  multiplicación, división, resto
       + -    adición, sustracción
       << >>  desplazamientos de bits a izquierda y derecha
       <= >= < >
              comparación
       == !=  igualdad y desigualdad
       &      Y de bits (AND)
       ^      O exclusivo de bits (XOR)
       |      O inclusivo de bits (OR)
       &&     Y lógico (AND)
       ||     O lógico (OR)
       expr?expr:expr
              evaluación condicional
       = *= /= %= += -= <<= >>= &= ^= |=
              asignación

       Se  permite  que las variables del shell actúen como operandos; se realiza la expansión de
       parámetro antes de la evaluación de la expresión.  El valor de un parámetro se fuerza a un
       entero largo dentro de una expresión. Una variable del shell no necesita tener activado su
       atributo de entero para emplearse en una expresión.

       Las constantes con un 0 inicial se interpretan como números octales.  Un 0x ó  0X  inicial
       denota un número en hexadecimal.  De otro modo, los números toman la forma [base#]n, donde
       base es un número en base 10 entre 2 y 64 que representa la base aritmética,  y  n  es  un
       número en esa base.  Si base se omite, entonces se emplea la base 10.  Los dígitos mayores
       que 9 se representan por las letras minúsculas, las metras mayúsculas, _,  y  @,  en  este
       orden.   Si  base  es  menor  o  igual  que  36, las letras minúsculas y mayúsculas pueden
       emplearse indistintamente para representar números entre 10 y 35.

       Los operadores se evalúan en orden de precedencia. Las sub-expresiones entre paréntesis se
       evalúan primero y pueden sustituir a las reglas de precedencia anteriores.

EXPRESIONES CONDICIONALES

       Las  expresiones  condicionales  son empleadas por la orden compuesta [[ y por las órdenes
       internas test y [ para comprobar los atributos de ficheros  y  realizar  comparaciones  de
       cadenas  y  aritméticas.   Las  expresiones se forman a partir de las primarias monarias o
       binarias siguientes.  Si cualquier argumento fichero de una de estas primarias  es  de  la
       forma /dev/fd/n, entonces se comprueba el descriptor de fichero  n.

       -a fichero
              Verdad si fichero existe.
       -b fichero
              Verdad si fichero existe y es un fichero especial de bloques.
       -c fichero
              Verdad si fichero existe y es un fichero especial de caracteres.
       -d fichero
              Verdad si fichero existe y es un directorio.
       -e fichero
              Verdad si fichero existe.
       -f fichero
              Verdad si fichero existe y es un fichero regular.
       -g fichero
              Verdad si fichero existe y tiene el bit SGID.
       -k fichero
              Verdad si fichero existe y tiene el bit ``pegajoso'' (STIcky).
       -p fichero
              Verdad si fichero existe y es una tubería con nombre (FIFO).
       -r fichero
              Verdad si fichero existe y se puede leer.
       -s fichero
              Verdad si fichero existe y tiene un tamaño mayor que cero.
       -t fd  Verdad si el descriptor de fichero fd está abierto y se refiere a una terminal.
       -u fichero
              Verdad si fichero existe y tiene el bit SUID.
       -w fichero
              Verdad si fichero existe y se puede modificar.
       -x fichero
              Verdad si fichero existe y es ejecutable.
       -O fichero
              Verdad si fichero existe y su propietario es el UID efectivo.
       -G fichero
              Verdad si fichero existe y su grupo es el GID efectivo.
       -L fichero
              Verdad si fichero existe y es un enlace simbólico o blando.
       -S fichero
              Verdad si fichero existe y es un zócalo (socket).
       -N fichero
              Verdad si fichero existe y ha sido modificado desde que se leyó la última vez.
       fichero1 -nt fichero2
              Verdad si fichero1 es más reciente (según la fecha de modificación) que fichero2.
       fichero1 -ot fichero2
              Verdad si fichero1 es más antiguo que fichero2.
       fichero1 -ef fichero2
              Verdad si fichero1 y fichero2 tienen los mismos números de nodo-í y de dispositivo.
       -o nombre-opción
              Verdad  si  la  opción  del  shell  nombre-opción  está  activada.  Vea la lista de
              opciones bajo la descripción de la opción -o de la orden interna set más abajo.
       -z cadena
              Verdad si la longitud de cadena es cero.
       -n cadena
       cadena Verdad si la longitud de cadena no es cero.
       cadena1 == cadena2
              Verdad si las cadenas son iguales.  También se puede emplear = en vez de ==.
       cadena1 != cadena2
              Verdad si las cadenas no son iguales.
       cadena1 < cadena2
              Verdad si cadena1 se ordena lexicográficamente antes de cadena2 en la  localización
              en curso.
       cadena1 > cadena2
              Verdad  si  cadena1 se clasifica lexicográficamente tras cadena2 en la localización
              en curso.
       arg1 OP arg2
              OP es uno de -eq, -ne, -lt, -le, -gt, o -ge.  Estos operadores aritméticos binarios
              devuelven  verdadero  si  arg1 es igual a, distinto de, menor que, menor o igual a,
              mayor que, o mayor o igual a arg2, respectivamente.  Arg1 y arg2 pueden ser enteros
              positivos o negativos.

EXPANSIÓN DE ORDEN SIMPLE

       Cuando  se  ejecuta  una  orden  simple,  el  shell  realiza  las  siguientes expansiones,
       asignaciones y redirecciones, de izquierda a derecha.

       1.     Las palabras que el analizador ha marcado como asignaciones de variables  (aquéllas
              que  preceden  al  nombre de la orden) y redirecciones se guardan para un procesado
              posterior.

       2.     Las palabras que no sean asignaciones de variables ni redirecciones se expanden. Si
              tras la expansión quedan aún palabras, la primera palabra se toma como el nombre de
              la orden y las palabras restantes son los argumentos.

       3.     Se ejecutan las redirecciones como se describió más arriba bajo REDIRECCIÓN.

       4.     El texto tras el = en cada asignación de variable está sujeto a expansión de tilde,
              expansión  de  parámetro, sustitución de orden, expansión aritmética y eliminado de
              comillas antes de ser asignado a la variable.

       Si no resulta ningún nombre de orden, las asignaciones de  variables  afectan  al  entorno
       actual del shell. De otro modo, las variables se añaden al entorno de la orden ejecutada y
       no afectan al entorno del shell en curso.  Si cualquiera de las asignaciones  intenta  dar
       un valor a una variable de lectura exclusiva, se produce un error, y la orden acaba con un
       estado distinto de cero.

       Si no resulta ningún nombre de orden, se hacen  las  redirecciones,  pero  no  afectan  al
       entorno  del shell en curso. Un error de redirección hace que el shell acabe con un estado
       distinto de cero.

       Si hay un nombre de orden tras la expansión, la ejecución procede como se describió antes.
       De  otro modo, la orden sale. Si una de las expansiones contenía una sustitución de orden,
       el estado de salida de la orden es el de la última sustitución de orden realizada.  Si  no
       había sustituciones de órdenes, la orden acaba con un estado de cero.

EJECUCIÓN DE ÓRDENES

       Después de que una orden ha sido dividida en palabras, si el resultado es una orden simple
       y una lista opcional de argumentos, tienen lugar las siguientes acciones.

       Si el nombre de la orden no contiene barras inclinadas, el shell intenta  localizarla.  Si
       existe una función del shell con ese nombre, esa función se llama como se describió arriba
       en FUNCIONES.  Si el nombre no coincide con el de ninguna función, el shell lo busca en la
       lista de órdenes internas. Si se encuentra, se llama a la orden interna correspondiente.

       Si  el  nombre  no  es ni una función del shell ni una orden interna, y no contiene barras
       inclinadas, bash busca en cada elemento de PATH un  directorio  que  contenga  un  fichero
       ejecutable  con  ese nombre.  Bash emplea una tabla de dispersión (hash) para recordar los
       nombres de camino completos de los ficheros ejecutables (vea hash en ÓRDENES INTERNAS  DEL
       SHELL  abajo).   Sólo  se  realiza  una búsqueda completa de los directorios de PATH si la
       orden no se encuentra en la tabla de dispersión.  Si la búsqueda no es  satisfactoria,  el
       shell muestra un mensaje de error y devuelve un estado de salida de 127.

       Si  la  búsqueda  fue  exitosa,  o  si  el  nombre  de  la orden contiene una o más barras
       inclinadas, el shell ejecuta el programa  con  ese  nombre  en  un  entorno  de  ejecución
       separado.   El argumento 0 se pone al nombre dado, y el resto de argumentos de la orden se
       ponen a los argumentos dados, si los hay.

       Si esta ejecución fallara porque el fichero no tuviera un formato ejecutable, y el fichero
       no  fuera  un  directorio,  se  supone  que es un guión del shell, un fichero que contiene
       órdenes del shell. Se crea un subshell para ejecutarlo.  Este subshell se  reinicia  a  sí
       mismo,  así  que  el  efecto  es  el mismo que si se hubiera llamado a un nuevo shell para
       manejar el guión, con la excepción de que el hijo retiene las  localizaciones  de  órdenes
       recordadas por el padre (vea hash abajo en ÓRDENES INTERNAS DEL SHELL).

       Si el programa es un fichero que empieza con los dos caracteres #!, el resto de la primera
       línea  especifica  un  intérprete  para  el  programa.  El  shell  ejecuta  el  intérprete
       especificado  en  sistemas  operativos  que  no  manejen  por  sí  mismos  este formato de
       ejecutable. Los argumentos del intérprete consisten en un solo argumento opcional tras  el
       nombre  del  intérprete en la primera linea del programa, seguido del nombre del programa,
       seguido por los argumentos de la orden, si los hubiera.

ENTORNO DE EJECUCIÓN DE ÓRDENES

       El shell tiene un entorno de ejecución, que consiste en lo siguiente:

       •      ficheros abiertos heredados por el shell  en  la  llamada,  quizás  modificada  por
              redirecciones suministradas a la orden interna exec

       •      el directorio de trabajo en curso, establecido por cd, pushd o popd, o heredado por
              el shell en la llamada

       •      la máscara de modo de creación de ficheros, establecida por umask  o  heredada  del
              padre del shell

       •      las trampas en curso establecidas por trap

       •      parámetros  del shell que han sido establecidos por asignaciones de variables o con
              set, o heredados del padre del shell en el entorno

       •      funciones del shell definidas durante la ejecución o heredadas del padre del  shell
              en el entorno

       •      opciones  activadas  en  la  llamada  (bien por omisión o mediante argumentos en la
              línea de órdenes) o por set

       •      opciones activadas mediante shopt

       •      alias del shell definidos con alias

       •      varios identificadores de proceso, incluyendo los de trabajos en segundo plano,  el
              valor de $$, y el valor de $PPID

       Cuando  una orden simple distinta de una interna o una función del shell se va a ejecutar,
       se llama en un entorno de ejecución separado que consiste en lo siguiente. A menos que  se
       diga otra cosa, los valores se heredan del shell.

       •      los  ficheros  abiertos del shell, más las modificaciones y adiciones especificadas
              en la orden por redirecciones

       •      el directorio de trabajo en curso

       •      la máscara de modo de creación de ficheros

       •      variables del shell marcadas para la exportación, junto  con  variables  exportadas
              para la orden, pasadas en el entorno

       •      las trampas capturadas por el shell se restauran a los valores del padre del shell,
              y las trampas que no son tenidas en cuenta por el shell tampoco lo son

       Una orden llamada en este entorno separado no puede afectar al entorno  de  ejecución  del
       shell.

       La sustitución de órdenes y las órdenes asíncronas se llaman en un entorno de subshell que
       es un duplicado del entorno del shell, excepto que las trampas capturadas por el shell  se
       restauran  a  los  valores  que  el  shell  heredó  de su padre en la llamada. Las órdenes
       internas que se llaman como parte de una tubería se ejecutan  también  en  un  entorno  de
       subshell.  Los  cambios  hechos  al  entorno  del subshell no pueden afectar al entorno de
       ejecución del shell.

ENTORNO

       Cuando se llama a un programa, se le da un vector de  cadenas  de  caracteres  llamado  el
       entorno.  Esto es una lista de parejas nombre-valor, de la forma nombre=valor.

       El  shell  le permite manipular el entorno de varias maneras. En la hora de la llamada, el
       shell escudriña el entorno y crea un parámetro para  cada  nombre  encontrado,  marcándolo
       automáticamente  para  la  exportación a procesos hijos. Las órdenes ejecutadas heredan el
       entorno.  Las órdenes export y declare -x permiten añadir y quitar parámetros y  funciones
       del  entorno. Si el valor de un parámetro en el entorno se modifica, el nuevo valor pasa a
       formar parte del entorno, reemplazando al antiguo. El entorno heredado por cualquier orden
       ejecutada  consiste  en el entorno inicial del shell, cuyos valores pueden ser modificados
       en el shell, menos las parejas quitadas mediante la orden unset más las adiciones con  las
       órdenes export y declare -x.

       El   entorno  para  cualquier  orden  simple  o  función  puede  aumentarse  temporalmente
       prefijándola con asignaciones de parámetros,  como  se  describió  arriba  en  PARÁMETROS.
       Estas sentencias de asignación afectan solamente al entorno visto por esa orden.

       Si  la  opción  -k está puesta (vea la orden interna set más adelante), entonces todas las
       asignaciones de parámetros se ponen en el entorno para una orden, no sólo las que preceden
       a su nombre.

       Cuando  bash  llama  a una orden externa, la variable _ se pone con el nombre completo del
       fichero de la orden y se pasa a esa orden en su entorno.

ESTADO DE SALIDA

       Para los propósitos del shell, una orden que acabe con un estado de salida cero, ha tenido
       éxito.  Un  estado  de  salida  de cero indica éxito. Un estado de salida distinto de cero
       indica fallo.  Cuando una orden termina por una señal  fatal,  bash  emplea  el  valor  de
       128+señal como el estado de salida.

       Si una orden no se encuentra, el proceso hijo creado para ejecutarla devuelve un estado de
       127. Si una orden se encuentra pero no es ejecutable, el estado de salida es 126.

       Si una orden falla debido a un error durante la expansión  o  redirección,  el  estado  de
       salida es mayor que cero.

       Las  órdenes  incorporadas  en  el  shell  devuelven un estado de 0 (verdad) si acaban con
       éxito, y distinto de cero (falso) si ocurre un error  mientras  se  ejecutan.   Todas  las
       órdenes  internas  devuelven  un  estado  de  salida  de  2 para indicar un modo de empleo
       incorrecto.

       El propio bash devuelve el estado de salida de la última  orden  ejecutada,  a  menos  que
       ocurra  un  error  de  sintaxis,  en  cuyo  caso acaba con un estado distinto de cero. Vea
       también la orden interna exit abajo.

SEÑALES

       Cuando bash es interactivo, en la ausencia de trampas, no hace caso de  SIGTERM  (de  modo
       que  kill  0 no mata un shell interactivo), y se captura y maneja SIGINT (de manera que la
       orden interna wait es interrumpible).  En todos los casos, bash no hace caso  de  SIGQUIT.
       Si el control de trabajos tiene efecto, bash no hace caso de SIGTTIN, SIGTTOU, y SIGTSTP.

       Los  trabajos  síncronos  empezados  por  bash  tienen  manejadores de señal puestos a los
       valores heredados por el shell de su padre.  Cuando el  control  de  trabajo  no  está  en
       efecto,  las  órdenes  internas  no  hacen caso de SIGINT ni SIGQUIT tampoco.  Las órdenes
       ejecutadas como resultado de sustitución de orden no hacen caso de las señales de  control
       de trabajo generadas mediante el teclado SIGTTIN, SIGTTOU, ni SIGTSTP.

       El  shell, de forma predeterminada, acaba cuando recibe una señal SIGHUP.  Antes de salir,
       reenvía la señal SIGHUP a todos los trabajos, en ejecución  o  parados.   A  los  trabajos
       parados  se  les  envía  SIGCONT  para  asegurarse  de  que reciben la señal SIGHUP.  Para
       prevenir que el shell envíe la señal a un trabajo particular, debería quitarse de la lista
       de  trabajos  con  la  orden  interna  disown (vea ÓRDENES INTERNAS DEL SHELL más abajo) o
       marcarlo para no recibir SIGHUP empleando disown -h.

       Si la opción del shell huponexit se ha puesto mediante shopt, bash envía una señal  SIGHUP
       a todos los trabajos cuando un shell de entrada interactivo se acaba.

       Cuando  bash  recibe  una  señal  para  la que se ha puesto una trampa mientras se se está
       esperando que una orden se complete, la trampa no se  ejecutará  hasta  que  la  orden  se
       complete.   Cuando bash está esperando una orden asíncrona mediante la orden interna wait,
       la recepción de una señal para la que se ha definido una trampa, hará que la orden interna
       wait regrese inmediatamente con un estado de salida mayor que 128, inmediatamente tras que
       se ejecute la trampa.

CONTROL DE TRABAJOS

       El control de trabajos se refiere a la capacidad de parar  selectivamente  (suspender)  la
       ejecución  de  procesos  y  continuar  (reanudar)  su ejecución posteriormente. Un usuario
       emplea esta facilidad típicamente  a  través  de  una  interfaz  interactiva  suministrada
       conjuntamente por el controlador de terminal del sistema y bash.

       El  shell  asocia un trabajo con cada tubería. Mantiene una tabla de trabajos ejecutándose
       actualmente, que pueden listarse con la  orden  jobs.   Cuando  bash  arranca  un  trabajo
       asíncronamente (en segundo plano), imprime una línea con un aspecto como ésta:

              [1] 25647

       indicando  que  este  trabajo es el número 1 y que el PID del último proceso en la tubería
       asociada con él es 25647.  Todos los procesos en una misma tubería son miembros del  mismo
       trabajo.  Bash emplea la abstracción del trabajo como la base para el control de trabajos.

       Para  facilitar  la  implementación  de la interfaz del usuario al control de trabajos, el
       sistema mantiene la noción de un identificador (ID) de grupo de procesos de la terminal en
       curso.   Los miembros de este grupo de procesos (procesos cuyo PGID es igual al PGID de la
       terminal en curso) reciben señales generadas por el teclado  como  SIGINT.   Se  dice  que
       estos  procesos  están  en  primer plano.  Los procesos en segundo plano son aquéllos cuyo
       PGID difiere del de la terminal; tales procesos son inmunes a señales generadas  desde  el
       teclado.   Sólo  los  procesos  en  primer  plano  tienen  permitido leer o escribir en la
       terminal. A los procesos en segundo  plano  que  intenten  leer  de  (o  escribir  en)  la
       terminal,  el  controlador  de terminal les manda una señal SIGTTIN (SIGTTOU) que, a menos
       que  sea capturada, suspende el proceso.

       Si el sistema operativo en el que bash se está ejecutando, admite el control  de  trabajos
       (Linux  lo  admite,  por supuesto), bash le permite usarlo.  Teclear el carácter suspender
       (típicamente ^Z, Control-Z) mientras que un proceso  se  está  ejecutando,  hace  que  ese
       proceso  se  pare  y  le  devuelve a Ud. al bash.  Teclear el carácter suspensión diferida
       (típicamente ^Y, Control-Y) hace que el proceso se pare cuando intente leer entrada  desde
       la  terminal,  y  el  control  se devuelve a bash.  El usuario puede entonces manipular el
       estado de este trabajo, empleando la orden bg para continuar con él en segundo  plano,  la
       orden  fg para continuar con él en primer plano, o la orden kill para matarlo. Un ^Z tiene
       efecto inmediatamente, y tiene el efecto adicional colateral de que la salida pendiente  y
       lo que haya en el búfer de entrada del teclado se descartan.

       Hay  varias  formas  de  referirse  a  un trabajo en el shell.  El carácter % introduce un
       nombre de trabajo. El trabajo número n puede ser referenciado como %n.  Un  trabajo  puede
       ser  referenciado  utilizando un prefijo del nombre empleado para arrancarlo, o usando una
       subcadena que aparezca en su línea de órdenes.  Por ejemplo.  %ce se refiere a un  trabajo
       ce  parado.  Si un prefijo concuerda con más de un trabajo, bash informa de un error. Usar
       %?ce, por otra parte, se refiere a cualquier trabajo que contenga la cadena ce en su línea
       de órdenes. Si la subcadena concuerda con más de un trabajo, bash informa de un error. Los
       símbolos %% y %+ se refieren a la noción que tiene el shell del trabajo en curso,  que  es
       el  último  trabajo  parado mientras estaba en primer plano o se arrancó en segundo plano.
       El trabajo anterior puede referenciarse usando %-.   En  la  salida  relativa  a  trabajos
       (e.g.,  la  salida  de  la  orden jobs), el trabajo actual se marca siempre con un +, y el
       anterior con un -.

       Si simplemente damos el nombre de un trabajo, esto puede traerlo a primer plano: %1 es  un
       sinónimo  de  ``fg  %1'',  que trae el trabajo número 1 desde el segundo plano al primero.
       Similarmente, ``%1 &'' reanuda el trabajo 1 en el segundo plano, equivalente a ``bg %1''.

       El shell se entera inmediatamente de cuando un trabajo  cambia  de  estado.   Normalmente,
       bash espera hasta que está a punto de mostrar un indicador antes de informar de cambios en
       el estado de un trabajo, para no interrumpir cualquier otra salida. Si la opción -b de  la
       orden interna set está activada, bash informa de tales cambios inmediatamente.

       Si  se intenta salir de bash mientras hay trabajos parados, el shell muestra un mensaje de
       aviso. La orden jobs se puede usar entonces para inspeccionar sus estados.  Si se hace  un
       segundo  intento  de  salir  sin ninguna otra orden intermedia, el shell no muestra ningún
       otro aviso, y los trabajos parados se hacen terminar.

INDICADORES

       Cuando se ejecuta interactivamente, bash muestra el indicador  primario  PS1  cuando  está
       dispuesto  para  leer  una  orden,  y  el  secundario PS2 cuando necesita más entrada para
       completar  una  orden.   Bash  permite  que  estas  cadenas  indicadoras  se  personalicen
       insertando  un  número  de  caracteres  especiales protegidos con la barra inversa, que se
       interpretan como sigue:
              \a     un carácter de alerta ASCII (07)
              \d     la fecha en el formato "Día-Semana Mes  Día"  (ejemplo,  "Tue  May  26")  en
                     inglés
              \e     un carácter de escape (ESC) ASCII (033)
              \h     el nombre del computador anfitrión hasta el primer `.'
              \H     el nombre del computador anfitrión completo
              \n     salto de línea
              \r     retorno de carro
              \s     el  nombre del shell, el nombre base de $0 (la porción que sigue a la última
                     barra inclinada)
              \t     la hora actual en el formato de 24 horas HH:MM:SS
              \T     la hora actual en el formato de    12 horas HH:MM:SS
              \@     la hora actual en el formato de 12 horas con indicador AM/PM
              \u     el nombre de usuario del usuario en curso
              \v     la versión de bash (e.g., 2.00)
              \V     la distribución de bash, versión + nivel de parcheo (e.g., 2.00.0)
              \w     el directorio de trabajo en curso
              \W     el nombre base del directorio de trabajo
              \!     el número de historia de esta orden
              \#     el número de orden de esta orden
              \$     si el UID efectivo es 0 (el super-usuario), un #, si no un $
              \nnn   el carácter correspondiente al número octal nnn
              \\     una barra inclinada invertida
              \[     empieza una secuencia de caracteres no  imprimibles,  que  pueden  emplearse
                     para empotrar una secuencia de control del terminal en el indicador
              \]     termina una secuencia de caracteres no imprimibles

       El  número  de  orden  y  el  número  de  historia son usualmente diferentes: el número de
       historia de una orden es su posición en la lista de historia, que  puede  incluir  órdenes
       restauradas  desde el fichero de historia (vea HISTORIA más abajo), mientras que el número
       de orden es la posición en la secuencia de órdenes ejecutadas durante la sesión  de  shell
       actual.   Después  de  que la cadena es descodificada, se expande mediante la expansión de
       parámetros,  sustitución  de  órdenes,  expansión  aritmética,  expansión  de  cadena,   y
       eliminación  de  comillas,  sujeta  al  valor  de  la  opción del shell promptvars (vea la
       descripción de la orden shopt bajo ÓRDENES INTERNAS DEL SHELL más adelante).

READLINE

       Readline (leer línea) es la biblioteca que maneja la lectura de la entrada cuando  se  usa
       un  shell interactivo, a menos que se haya dado la opción --noediting cuando se llamó.  De
       forma predeterminada, las órdenes de edición de la línea son similares  a  las  de  emacs.
       También  se dispone de una interfaz de edición de líneas al estilo de vi.  Para desactivar
       la edición de líneas una vez que el shell está en ejecución, use las opciones +o  emacs  o
       +o vi de la orden interna set (vea ÓRDENES INTERNAS DEL SHELL abajo).

   Notación de Readline
       En  esta  sección,  se emplea la notación al estilo de emacs para denotar las teclas.  Las
       teclas de control se representan por medio de C-tecla; así, C-n  significa  Control-N.  De
       forma  similar,  las  teclas  meta  (Alt)  se  representan  con  M-tecla, de forma que M-x
       significa Meta-X. (En teclados sin tecla meta, M-x significa ESC x, i.e., pulsar la  tecla
       de  escape  (Esc)  y  luego  la  tecla  x.   Esto  hace  que  ESC sea el prefijo meta.  La
       combinación M-C-x quiere decir ESC-Control-x, o pulsar la tecla Escape  y  luego  mantener
       presionada la tecla Control mientras se pulsa la tecla x.)

       Las órdenes de readline pueden recibir argumentos numéricos que actúan normalmente como un
       número de repetición.  Algunas veces, empero, lo que tiene significado  es  el  signo  del
       argumento.  Pasar un argumento negativo a una orden que actúa en la dirección adelante (p.
       ej., kill-line) hace que esa orden actúe en la  dirección  contraria,  hacia  atrás.   Las
       órdenes cuyo comportamiento con argumentos se desvíe de esto se señalan más adelante.

       Cuando  una  orden  se  describe como que corta texto, el texto borrado se guarda para una
       posible futura recuperación (pegado). El texto cortado se guarda en un  anillo  de  corte.
       Cortes consecutivos hacen que el texto se acumule en una unidad, que puede pegarse toda de
       golpe, de una vez. Las órdenes que no cortan texto separan  los  trozos  de  texto  en  el
       anillo de corte.

   Inicio de Readline
       Readline se personaliza poniendo órdenes en un fichero de inicio (el fichero inputrc).  El
       nombre de este fichero se toma del valor de la variable INPUTRC.  Si esta variable no está
       definida,  el  valor  predeterminado es ~/.inputrc.  Cuando un programa que hace uso de la
       biblioteca readline arranca, el fichero de inicio se lee, y se establecen las definiciones
       de  teclas  y variables.  Sólo se permiten unas pocas construcciones básicas en el fichero
       de inicio de readline.  Las líneas en blanco no se  tienen  en  cuenta.   Las  líneas  que
       comiencen  con  un  #  son  comentarios.   Las  líneas  que  comiencen  con  un  $ indican
       construcciones  condicionales.   Otras  líneas  representan  definiciones  de   teclas   y
       definiciones de variables.

       Las definiciones predeterminadas de teclas pueden cambiarse con un fichero inputrc.  Otros
       programas que usen esta biblioteca pueden añadir sus propias órdenes y definiciones.

       Por ejemplo, el poner

              M-Control-u: universal-argument
       o
              C-Meta-u: universal-argument
       dentro  del  fichero  inputrc  haría  que  M-C-u   ejecutara   la   orden   de    readline
       universal-argument.

       Se  reconocen  los  siguientes  nombres  simbólicos  de caracteres: RUBOUT, DEL, ESC, LFD,
       NEWLINE, RET, RETURN, SPC, SPACE, y TAB.  Además  de  los  nombres  de  órdenes,  readline
       permite  que  se  enlace  una  tecla  cualquiera a una cadena de caracteres que se inserta
       cuando la tecla se pulse (una macro).

   Definiciones de teclas de Readline
       La sintaxis para controlar las definiciones de teclas en el  fichero  inputrc  es  simple.
       Todo  lo  que se requiere es el nombre de la orden o el texto de una macro y una secuencia
       de teclas con la cual debe enlazarse. El nombre se puede especificar en una de dos formas:
       como  un nombre simbólico de tecla, posiblemente con prefijos Meta- o Control-, o como una
       secuencia de teclas.  Cuando se use la forma nombre-tecla:nombre-función o macro,  nombre-
       tecla es el nombre de una tecla en inglés. Por ejemplo:

              Control-u: universal-argument
              Meta-Rubout: backward-kill-word
              Control-o: "> salida"

       En el ejemplo de arriba, C-u se enlaza a la función universal-argument, M-DEL se vincula a
       la función backward-kill-word, y C-o se define como que se ejecute la macro  expresada  en
       la parte derecha (esto es, insertar el texto > salida en la línea).

       En  la  segunda  forma,  "sectecla":nombre-función o macro, sectecla difiere de la nombre-
       tecla de antes en que las cadenas que representan una secuencia entera  de  teclas  pueden
       especificarse  poniendo la secuencia entre comillas dobles. Así se pueden utilizar algunas
       teclas de escape al estilo de GNU Emacs, como en el siguiente ejemplo.

              "\C-u": universal-argument
              "\C-x\C-r": re-read-init-file
              "\e[11~": "Tecla de Función 1"

       En este ejemplo, C-u se enlaza de nuevo a  la  función  universal-argument.   C-x  C-r  se
       vincula  a  la  función  re-read-init-file, y ESC [ 1 1 ~ se define como que se inserte el
       texto Tecla de Función 1.  El conjunto completo de las secuencias de escape al  estilo  de
       GNU Emacs es
              \C-    prefijo de control
              \M-    prefijo meta
              \e     un carácter de Escape
              \\     barra inclinada inversa
              \"     una " literal
              \'     un ' literal

       Además  de  las  secuencias  de  escape  al  estilo de GNU Emacs, se dispone de un segundo
       conjunto de escapes con la barra invertida:
              \a     alerta (campana)
              \b     espacio atrás
              \d     borrado
              \f     salto de página
              \n     salto de línea
              \r     retorno de carro
              \t     tabulador horizontal
              \v     tabulador vertical
              \nnn   el carácter cuyo código es el valor octal nnn (de 1 a 3 dígitos)
              \xnnn  el carácter cuyo código es el valor hexadecimal nnn (de 1 a 3 dígitos)

       Cuando se mete el texto de una macro, se deben emplear  comillas  simples  o  dobles  para
       indicar  una  definición  de  macro.   El  texto  no entrecomillado se supone un nombre de
       función.  En el cuerpo de la macro, los escapes con barra inversa de arriba  se  expanden.
       La barra inversa protegerá a cualquier otro carácter en el texto de la macro, incluyendo a
       " y a '.

       Bash permite mostrar o modificar las definiciones de teclas en  curso  mediante  la  orden
       interna bind.  El modo de edición puede cambiarse durante una sesión interactiva empleando
       la opción -o de la orden interna set (vea ÓRDENES INTERNAS DEL SHELL abajo).

   Variables de Readline
       Readline tiene variables que se pueden usar para personalizar más aún  su  comportamiento.
       Una variable se puede definir en el fichero inputrc con una sentencia de la forma

              set nombre-variable valor

       Excepto  cuando se diga, las variables de readline pueden tomar los valores On u Off.  Las
       variables y sus valores predeterminados son:

       bell-style (audible)
              Controla qué pasa cuando readline quiere tocar el  pito  de  la  terminal.   Si  se
              define  como  none, readline nunca toca el pito. Si se pone a visible, readline usa
              una alerta visible si está disponible.  Si se pone como audible,  readline  intenta
              hacer sonar el pito de la terminal.
       comment-begin (``#'')
              La  cadena  que  se  inserta cuando se ejecuta la orden de readline insert-comment.
              Esta orden está enlazada a M-# en modo emacs y a # en modo vi.
       completion-ignore-case (Off)
              Si se pone a On, readline realiza la  concordancia  y  terminación  de  nombres  de
              ficheros sin importar si las letras son mayúsculas o minúsculas.
       completion-query-items (100)
              Esto  determina  cuándo  se  pregunta  al  usuario  si  quiere  ver  el  número  de
              terminaciones posibles generadas por la orden possible-completions.  Puede  ponerse
              a  cualquier  valor  entero  mayor  o  igual  a  cero.  Si  el  número  de posibles
              terminaciones es mayor o igual que el valor de esta  variable,  al  usuario  se  le
              pregunta si desea o no verlas; si no, simplemente se muestran en la terminal.
       convert-meta (On)
              Si  se  pone  a  On,  readline  convertirá caracteres con el octavo bit a uno a una
              secuencia de teclas ASCII poniendo el octavo bit a cero y  prefijando  un  carácter
              Esc (en efecto, usando Esc como el prefijo meta).
       disable-completion (Off)
              Si  se pone a On, readline inhibirá la terminación de palabras. Los caracteres para
              la terminación se insertarán en la línea como si se hubieran hecho corresponder con
              self-insert.
       editing-mode (emacs)
              Controla  si  readline  empieza con un conjunto de definiciones de teclas similar a
              las de emacs o vi.  editing-mode puede ponerse a los valores emacs o vi.
       enable-keypad (Off)
              Cuando se pone a On, readline intentará  activar  el  teclado  auxiliar  cuando  se
              llame.  Algunos  sistemas  necesitan  esto  para  activar  las teclas de flechas de
              cursor.
       expand-tilde (Off)
              Si se pone a on, la expansión de  tilde  se  realiza  cuando  readline  intenta  la
              terminación de palabras.
       horizontal-scroll-mode (Off)
              Cuando  se  pone  a  On,  esto  hace que readline use una sola línea para pantalla,
              haciendo rodar la entrada horizontalmente en una sola línea de la  pantalla  cuando
              ésta  es  más  larga  que la anchura de la pantalla; en lugar de seguir en la línea
              siguiente.
       input-meta (Off)
              Si se pone a On, readline habilitará la entrada de 8 bits (esto  es,  no  pondrá  a
              cero el octavo bit de los caracteres que lea), sin importar lo que la terminal diga
              que admite. El nombre meta-flag es un sinónimo para esta variable.
       keymap (emacs)
              Establece el mapa de teclado actual para readline. El conjunto de nombres de  mapas
              de   teclado   válidos   es  emacs,  emacs-standard,  emacs-meta,  emacs-ctlx,  vi,
              vi-command, y vi-insert.  vi es equivalente a vi-command; emacs  es  equivalente  a
              emacs-standard.  El valor predeterminado es emacs; el valor de editing-mode también
              afecta al mapa de teclado predeterminado.
       mark-directories (On)
              Si se pone a On, los nombres de directorios completados tendrán una barra inclinada
              añadida al final.
       mark-modified-lines (Off)
              Si  se pone a On, las líneas de historia que hayan sido modificadas se muestran con
              un asterisco precediéndolas (*).
       output-meta (Off)
              Si se pone a On, readline mostrará directamente los caracteres con el octavo bit  a
              uno, en vez de como una secuencia de escape prefijada con meta.
       print-completions-horizontally (Off)
              Si  se  pone  a  On, readline mostrará terminaciones con concordancias clasificadas
              horizontalmente en orden alfabético, en vez de verticalmente.
       show-all-if-ambiguous (Off)
              Esto altera el comportamiento predeterminado de las funciones de terminación. Si se
              pone  a  on,  las  palabras que tienen más de una posible terminación hacen que las
              concordancias se muestren inmediatamente en vez de tocarse el pito de la terminal.
       visible-stats (Off)
              Si se pone a On, se añade un carácter que represente un tipo de  fichero  según  lo
              que devuelve stat(2) cuando se listan las terminaciones posibles.

   Construcciones condicionales de Readline
       Readline implementa una facilidad similar en espíritu a las características de compilación
       condicional del preprocesador de C que permite que las definiciones de teclas y  variables
       se  realicen en función de pruebas o condiciones. Hay cuatro directivas del analizador que
       se usan.

       $if    La construcción $if permite que las definiciones se hagan según el modo de edición,
              la  terminal  en  uso,  o  la  aplicación que haga uso de readline.  El texto de la
              condición se extiende hasta el final de la línea; no se requieren  caracteres  para
              aislarla.

              mode   La  forma mode= de la directiva $if se usa para ver si readline está en modo
                     emacs o vi.  Esto se puede emplear en conjunción con la  orden  set  keymap,
                     por  ejemplo, para poner el teclado en los mapas emacs-standard y emacs-ctlx
                     sólo si readline está arrancando en modo emacs.

              term   La  forma  term=  puede  emplearse  para  incluir  definiciones  de   teclas
                     específicas  de una terminal determinada, quizás para enlazar las secuencias
                     de teclas generadas por las teclas de función de la terminal. La palabra  en
                     la  parte derecha del = se prueba contra el nombre completo de la terminal y
                     contra la porción del nombre de la terminal antes del primer -. Esto permite
                     que sun concuerde con sun y con sun-cmd, por ejemplo.

              application
                     La  construcción application se emplea para incluir definiciones específicas
                     de la aplicación. Cada programa que usa la  biblioteca  readline  define  el
                     nombre  de  la aplicación, y en un fichero de arranque se puede comprobar si
                     existe un  valor  en  particular.   Esto  se  podría  emplear  para  enlazar
                     secuencias  de  teclas  a  funciones útiles para un programa específico. Por
                     ejemplo, la orden siguiente añade una secuencia de teclas  que  entrecomilla
                     la palabra en curso o la anterior en bash:

                     $if Bash
                     # Entrecomilla la palabra actual o previa
                     "\C-xq": "\eb\"\ef\""
                     $endif

       $endif Esta orden, como se ha visto en el ejemplo precedente, termina una orden $if.

       $else  Las órdenes en esta rama de la directiva $if se ejecutan si la comprobación falla.

       $include
              Esta  directiva  toma  como  argumento  un  solo  nombre de fichero y lee órdenes y
              definiciones de  ese  fichero.  Por  ejemplo,  la  siguiente  directiva  leería  de
              /etc/inputrc:

              $include  /etc/inputrc

   Búsquedas
       Readline  proporciona órdenes para buscar a través de la historia de órdenes (vea HISTORIA
       abajo) líneas  que  contengan  una  cadena  especificada.   Hay  dos  modos  de  búsqueda:
       incremental y no incremental.

       La búsqueda incremental comienza antes de que el usuario haya acabado de teclear la cadena
       a buscar.  Tan pronto como se teclea cada carácter de  la  cadena  de  búsqueda,  readline
       muestra  la  siguiente  entrada  de  la  historia  que concuerde con la cadena que se esté
       tecleando hasta este punto. Una búsqueda incremental requiere solamente tantos  caracteres
       como  se necesiten para encontrar la entrada deseada en la lista de historia.  El carácter
       Escape se emplea para terminar una  búsqueda  incremental.   Control-J  también  dará  por
       terminada   la  búsqueda.   Control-G  parará  abruptamente  una  búsqueda  incremental  y
       restaurará la línea original.  Cuando la búsqueda se termine, la entrada  de  la  historia
       que  contuviera  la  cadena de búsqueda se convierte en la línea en curso.  Para encontrar
       otras entradas en la lista de historia, teclee Control-S o Control-R, según sea apropiado.
       Esto  buscará  hacia atrás o  adelante en la historia la siguiente entrada concordante con
       la cadena de búsqueda tecleada hasta este  punto.   Cualquier  otra  secuencia  de  teclas
       asociada  a  una  orden  de  readline  terminará  la  búsqueda y ejecutará esa orden.  Por
       ejemplo, una nueva-línea terminará la búsqueda y aceptará la línea, ejecutando de ese modo
       la orden de la lista de historia.

       Las búsquedas no incrementales leen la cadena de búsqueda entera antes de empezar a buscar
       en las líneas de la lista de historia. La cadena de búsqueda puede  ser  tecleada  por  el
       usuario o ser parte de los contenidos de la línea en curso.

   Nombres de órdenes de Readline
       Lo  siguiente  es  una  lista  de  los  nombres  de las órdenes y las secuencias de teclas
       predeterminadas a las que están asociadas.  Los nombres de órdenes sin  una  secuencia  de
       tecla  acompañante  pertenecen  a  órdenes  que  no están asociadas a ninguna secuencia de
       teclas de forma predeterminada.

   Órdenes para el movimiento
       beginning-of-line (C-a)
              Mover al principio de la línea en curso.
       end-of-line (C-e)
              Mover al final de la línea.
       forward-char (C-f)
              Mover un carácter hacia adelante.
       backward-char (C-b)
              Mover un carácter hacia atrás.
       forward-word (M-f)
              Mover adelante hasta el final de la siguiente palabra. Las palabras se componen  de
              caracteres alfanuméricos (letras y dígitos).
       backward-word (M-b)
              Mover  atrás  hasta  el  principio  de esta palabra o la anterior.  Las palabras se
              componen de caracteres alfanuméricos (letras y dígitos).
       clear-screen (C-l)
              Limpiar la pantalla dejando la línea en curso al principio de la pantalla.  Con  un
              argumento, refresca la línea en curso sin borrar la pantalla.
       redraw-current-line
              Refrescar la línea en curso.

   Órdenes para manipular la lista de historia
       accept-line (Nueva-línea, Intro)
              Aceptar  la  línea  sin importar dónde esté el cursor. Si esta línea no está vacía,
              añadirla a  la  lista  de  historia  de  acuerdo  con  el  estado  de  la  variable
              HISTCONTROL.   Si  la  línea  es  una  de  las de la historia, modificada, entonces
              restaurar la línea de la historia a su estado original.
       previous-history (C-p)
              Obtener la orden anterior de la lista de historia, moviéndose hacia atrás en ella.
       next-history (C-n)
              Obtener la orden siguiente de la lista de historia,  moviéndose  hacia  delante  en
              ella.
       beginning-of-history (M-<)
              Mover a la primera línea de la lista de historia.
       end-of-history (M->)
              Mover  al  final  de  la  historia  de  entrada;  esto es, la línea que está siendo
              introducida en la actualidad.
       reverse-search-history (C-r)
              Buscar hacia atrás empezando en la línea en curso y moviéndose `arriba' a través de
              la lista de historia si es necesario. Esta búsqueda es incremental.
       forward-search-history (C-s)
              Buscar  hacia adelante empezando en la linea en curso y moviéndose `abajo' a través
              de la lista de historia si es necesario. Esta búsqueda es incremental.
       non-incremental-reverse-search-history (M-p)
              Buscar hacia atrás a través de la lista de historia empezando en la línea en  curso
              empleando una búsqueda no incremental de una cadena suministrada por el usuario.
       non-incremental-forward-search-history (M-n)
              Buscar  hacia  delante  a  través  de la lista de historia empezando en la línea en
              curso empleando una búsqueda no incremental  de  una  cadena  suministrada  por  el
              usuario.
       history-search-forward
              Buscar  hacia  delante  a  través  de la lista de historia una cadena de caracteres
              entre el comienzo de la línea en curso y la posición actual del cursor (el  punto).
              Esta búsqueda no es incremental.
       history-search-backward
              Buscar  hacia atrás a través de la lista de historia una cadena de caracteres entre
              el comienzo de la línea en curso y la posición actual del cursor (el  punto).  Esta
              búsqueda no es incremental.
       yank-nth-arg (M-C-y)
              Insertar  el  primer argumento de la orden anterior (normalmente la segunda palabra
              de la línea previa) en el punto (la posición actual del cursor). Con  un  argumento
              n,  insertar  la  n-sima  palabra  de  la  orden anterior (las palabras en la orden
              anterior empiezan con la palabra  0).  Un  argumento  negativo  inserta  la  n-sima
              palabra desde el final de la orden anterior.
       yank-last-arg (M-., M-_)
              Insertar  el último argumento de la orden anterior (la última palabra de la entrada
              anterior de la lista de historia). Con un argumento, se comporta  exactamente  como
              yank-nth-arg.  Llamadas sucesivas a yank-last-arg mueven hacia atrás en la lista de
              historia, insertando cada vez el último argumento de cada línea.
       shell-expand-line (M-C-e)
              Expandir la línea como hace el shell. Esto realiza  la  expansión  de  alias  y  de
              historia  así  como  todas  las  expansiones de palabra del shell. Vea EXPANSIÓN DE
              HISTORIA abajo para una descripción de la expansión de historia.
       history-expand-line (M-^)
              Realizar la expansión de historia en la línea en curso.  Vea EXPANSIÓN DE  HISTORIA
              abajo para una descripción de la expansión de historia.
       magic-space
              Efectuar  la expansión de historia en la línea en curso e insertar un espacio.  Vea
              EXPANSIÓN DE HISTORIA abajo para una descripción de la expansión de historia.
       alias-expand-line
              Realizar la expansión de alias en la línea en curso.  Vea  ALIAS  arriba  para  una
              descripción de la expansión de alias.
       history-and-alias-expand-line
              Realizar la expansión de historia y alias en la línea en curso.
       insert-last-argument (M-., M-_)
              Un sinónimo para yank-last-arg.
       operate-and-get-next (C-o)
              Aceptar la línea en curso para la ejecución y obtener la línea siguiente relativa a
              la actual desde la lista de historia, para la edición. Cualquier  argumento  no  se
              tiene en cuenta.

   Órdenes para cambiar el texto
       delete-char (C-d)
              Borrar  el  carácter  bajo el cursor. Si el punto está al principio de la línea, no
              hay caracteres en la línea, y el último carácter  tecleado  no  estaba  asociado  a
              delete-char, entonces devolver EOF.
       backward-delete-char (<X], DEL)
              Borrar  el  carácter tras el cursor. Cuando se da un argumento numérico, guardar el
              texto borrado en el anillo de corte.
       quoted-insert (C-q, C-v)
              Añadir el siguiente carácter tecleado a la línea tal cual. Así es  como  se  pueden
              insertar caracteres como C-q, por ejemplo.
       tab-insert (C-v TAB)
              Insertar un carácter de tabulación.
       self-insert (a, b, A, 1, !, ...)
              Insertar el carácter tecleado.
       transpose-chars (C-t)
              Arrastrar el carácter antes del punto hacia adelante sobre el carácter en el punto.
              El punto se mueve adelante también. Si el punto está al final de la línea, entonces
              transpone  los  dos  caracteres  antes  del  punto.  Los  argumentos  negativos  no
              funcionan.
       transpose-words (M-t)
              Arrastrar la palabra tras el cursor al lugar pasado la palabra enfrente del cursor,
              moviendo el cursor también sobre esa palabra.
       upcase-word (M-u)
              Poner  en  mayúsculas  la  palabra  en  curso  (o  la  siguiente). Con un argumento
              negativo, pone la anterior, pero no mueve el punto.
       downcase-word (M-l)
              Poner en minúsculas la palabra  en  curso  (o  la  siguiente).   Con  un  argumento
              negativo, pone la anterior, pero no mueve el punto.
       capitalize-word (M-c)
              Poner  en  mayúscula  la  inicial  de la palabra en curso (o la siguiente).  Con un
              argumento negativo, pone la anterior, pero no mueve el punto.

   Cortar y pegar
       kill-line (C-k)
              Cortar el texto desde la posición actual del cursor hasta el final de la línea.
       backward-kill-line (C-x DEL)
              Cortar hacia atrás hasta el principio de la línea.
       unix-line-discard (C-u)
              Cortar hacia atrás desde el punto hasta el principio de la línea. El texto  cortado
              se guarda en el anillo de corte.

       kill-whole-line
              Cortar  todos  los  caracteres  de  la  línea  en curso, sin importar dónde esté el
              cursor.
       kill-word (M-d)
              Cortar desde el cursor hasta el final de la palabra en curso, o si entre  palabras,
              hasta el final de la siguiente. Los extremos de las palabras son los mismos que los
              empleados por forward-word.
       backward-kill-word (M-DEL)
              Cortar la palabra tras el cursor. Los extremos de las palabras son los  mismos  que
              los empleados por backward-word.
       unix-word-rubout (C-w)
              Cortar  la palabra tras el cursor, empleando el espacio en blanco como un límite de
              palabra. Los extremos de las palabras son diferentes de los de backward-kill-word.
       delete-horizontal-space (M-\)
              Borrar todos los espacios y tabuladores alrededor del punto.
       kill-region
              Cortar el texto entre el punto y la marca (posición registrada  del  cursor).  Este
              texto se conoce como la región.
       copy-region-as-kill
              Copiar el texto en la región al anillo de corte.
       copy-backward-word
              Copiar  la palabra antes del punto al búfer de corte.  Los extremos de palabras son
              los mismos que con backward-word.
       copy-forward-word
              Copiar la palabra que sigue al punto al búfer de corte.  Los  extremos  de  palabra
              son los mismos que con forward-word.
       yank (C-y)
              Pegar la cima del anillo de corte en el búfer en donde esté el cursor.
       yank-pop (M-y)
              Rotar  en  el  anillo de corte, y pegar la nueva cima. Sólo funciona tras un yank o
              yank-pop.

   Argumentos numéricos
       digit-argument (M-0, M-1, ..., M--)
              Añadir este dígito al argumento, acumulándolo, o comenzar con un  nuevo  argumento.
              M-- empieza un argumento negativo.
       universal-argument
              Ésta  es  otra  forma de especificar un argumento.  Si esta orden se hace seguir de
              uno o más dígitos, opcionalmente con un signo menos inicial, estos dígitos  definen
              el  argumento.   Si a la orden siguen dígitos, ejecutar de nuevo universal-argument
              finaliza el argumento numérico, pero si no, no se tiene en cuenta.   Como  un  caso
              especial,  si  a esta orden sigue inmediatamente un carácter que no es ni un dígito
              ni un signo menos, el número del argumento para la siguiente  orden  se  multiplica
              por  cuatro.   El  número  del argumento es inicialmente uno, así que ejecutar esta
              función por primera vez hace que el número del argumento sea  cuatro,  una  segunda
              vez lo hace dieciséis, y así sucesivamente.

   Terminación
       complete (TAB)
              Intentar  realizar  una  terminación  del  texto  antes del punto.  Bash intenta la
              terminación tratando al texto como una variable (si el texto comienza con $),  como
              un  nombre  de  usuario  (si  el texto empieza con ~), como un nombre de computador
              anfitrión (si el texto comienza con @),  o  como  una  orden  (incluyendo  alias  y
              funciones), por este orden. Si nada de esto concuerda, se intenta la terminación de
              un nombre de fichero.
       possible-completions (M-?)
              Listar las terminaciones posibles del texto antes del punto.
       insert-completions (M-*)
              Insertar todas las terminaciones  del  texto  antes  del  punto  que  habrían  sido
              generadas por possible-completions.
       menu-complete
              Similar  a  complete,  pero  reemplaza  la  palabra  a  ser completada con una sola
              concordancia de la lista de  terminaciones  posibles.   La  ejecución  repetida  de
              menu-complete  camina  por  la  lista  de  terminaciones  posibles, insertando cada
              concordancia por turnos.  Al final de la lista de terminaciones, se hace  sonar  el
              pito  de  la  terminal  y  el  texto  original se restaura.  Un argumento n mueve n
              posiciones hacia delante en la lista de concordancias;  un  argumento  negativo  se
              puede  emplear  para moverse hacia atrás en la lista.  Esta orden está pensada para
              ser asociada a TAB, pero no está asociada a ninguna tecla de forma predeterminada.
       complete-filename (M-/)
              Intentar la terminación de un nombre de fichero en el texto antes del punto.
       possible-filename-completions (C-x /)
              Listar las posibles terminaciones del texto antes del  punto,  tratándolo  como  un
              nombre de fichero.
       complete-username (M-~)
              Intentar  la  terminación  del  texto antes del punto, tratándolo como un nombre de
              usuario.
       possible-username-completions (C-x ~)
              Listar las posibles terminaciones del texto antes del  punto,  tratándolo  como  un
              nombre de usuario.
       complete-variable (M-$)
              Intentar la terminación del texto antes del punto, tratándolo como una variable del
              shell.
       possible-variable-completions (C-x $)
              Listar las posibles terminaciones del texto antes del punto,  tratándolo  como  una
              variable del shell.
       complete-hostname (M-@)
              Intentar  la  terminación  del  texto antes del punto, tratándolo como un nombre de
              computador anfitrión.
       possible-hostname-completions (C-x @)
              Listar las posibles terminaciones del texto antes del  punto,  tratándolo  como  un
              nombre de computador anfitrión.
       complete-command (M-!)
              Intentar  la  terminación  del  texto antes del punto, tratándolo como un nombre de
              orden. La terminación de orden intenta hacer concordar el texto con alias, palabras
              reservadas,  funciones  del shell, órdenes internas del shell, y finalmente nombres
              de ficheros ejecutables, en ese orden.
       possible-command-completions (C-x !)
              Listar las posibles terminaciones del texto antes del  punto,  tratándolo  como  un
              nombre de orden.
       dynamic-complete-history (M-TAB)
              Intentar  la  terminación del texto antes del punto, comparando el texto con líneas
              de la lista de historia buscando concordancias para la terminación.
       complete-into-braces (M-{)
              Efectuar la terminación de nombres de ficheros y devolver la lista de terminaciones
              posibles encerrada entre llaves de forma que la lista esté disponible al shell (vea
              Expansión de llaves arriba).

   Macros de teclado
       start-kbd-macro (C-x ()
              Empezar a grabar los caracteres tecleados, en la macro de teclado en curso.
       end-kbd-macro (C-x ))
              Parar de grabar los caracteres tecleados  en  la  macro  de  teclado  en  curso,  y
              almacenar la definición.
       call-last-kbd-macro (C-x e)
              Reejecutar  la  última macro de teclado definida, haciendo que los caracteres en la
              macro aparezcan como si se hubieran pulsado en el teclado.

   Miscelánea
       re-read-init-file (C-x C-r)
              Leer los contenidos del fichero inputrc, e incorporar cualesquiera definiciones  de
              teclas o asignaciones de variables que se hubieran encontrado en él.
       abort (C-g)
              Terminar  abruptamente  la orden de edición en curso y tocar el pito de la terminal
              (según el establecimiento de bell-style).
       do-uppercase-version (M-a, M-b, M-x, ...)
              Si el carácter meta x está en minúscula, ejecutar la orden  que  esté  asociada  al
              carácter correspondiente en mayúscula.
       prefix-meta (ESC)
              Convertir en meta el siguiente carácter tecleado.  ESC f es equivalente a Meta-f.
       undo (C-_, C-x C-u)
              Deshacer de forma incremental, recordado separadamente para cada línea.
       revert-line (M-r)
              Deshacer todos los cambios hechos a esta línea. Esto es como ejecutar la orden undo
              las veces suficientes como para devolver la línea a su estado inicial.
       tilde-expand (M-~)
              Efectuar la expansión de tilde en la palabra en curso.
       set-mark (C-@, M-<espacio>)
              Establecer la marca en el punto actual. Si se da un argumento numérico, la marca se
              establece en esa posición.
       exchange-point-and-mark (C-x C-x)
              Cambia  el punto con la marca. La posición actual del cursor se pone en la posición
              guardada, y la vieja posición del cursor se guarda como la marca.
       character-search (C-])
              Se lee un carácter y el punto se mueve a la siguiente ocurrencia de  ese  carácter.
              Un  argumento  numérico  negativo  hace  que  la  búsqueda  sea  de las ocurrencias
              anteriores.
       character-search-backward (M-C-])
              Se lee un carácter y el punto se mueve a la anterior ocurrencia de ese carácter. Un
              argumento numérico negativo hace que la búsqueda sea de las ocurrencias siguientes.
       insert-comment (M-#)
              El  valor  de  la  variable de readline comment-begin se inserta al principio de la
              línea en curso, y la línea se acepta como si  se  hubiera  tecleado  Intro  (nueva-
              línea). Esto convierte la línea en curso en un comentario del shell.
       glob-expand-word (C-x *)
              La  palabra antes del punto se trata como un patrón para la expansión de nombres de
              caminos y la lista de nombres de fichero concordantes se inserta, reemplazando a la
              palabra.
       glob-list-expansions (C-x g)
              Mostrar  la  lista de expansiones que habrían sido generadas por glob-expand-word y
              redibujar la línea.
       dump-functions
              Mostrar todas las funciones y sus asociaciones de teclas en el flujo de  salida  de
              readline.  Si  se  da  un argumento numérico, la salida se formatea de tal modo que
              pueda formar parte de un fichero inputrc.
       dump-variables
              Mostrar todas las variables de readline a las que  se  puedan  asignar  valores,  y
              éstos, en el flujo de salida de readline. Si se da un argumento numérico, la salida
              se formatea de tal manera que pueda formar parte de un fichero inputrc.
       dump-macros
              Mostrar todas las secuencias de teclas de readline asociadas a macros y las cadenas
              de caracteres asociadas correspondientes. Si se da un argumento numérico, la salida
              se formatea de tal manera que pueda formar parte de un fichero inputrc.
       display-shell-version (C-x C-v)
              Mostrar información de versión acerca de la instancia actual de bash.

HISTORIA

       Cuando se habilita la opción -o history de la orden interna set, el shell da acceso  a  la
       historia  de  órdenes,  la  lista  de  órdenes tecleadas con anterioridad. El texto de los
       últimos HISTSIZE mandatos (por omisión, 500) se guarda en una lista de historia. El  shell
       almacena  cada  orden  en  la  lista  de  historia  antes  de la expansión de parámetros y
       variables (vea EXPANSIÓN arriba) pero tras efectuar la expansión de historia, sujeta a los
       valores  de las variables del shell HISTIGNORE e HISTCONTROL.  En el arranque, la historia
       se  inicia  a  partir  del  fichero  nombrado  en  la  variable  HISTFILE   (por   omisión
       ~/.bash_history).   HISTFILE  se  trunca,  si  es  necesario,  para  contener  no  más  de
       HISTFILESIZE líneas.  Cuando un shell interactivo termina, las últimas HISTSIZE líneas  se
       copian  de la lista de historia a HISTFILE.  Si la opción del shell histappend está activa
       (vea la descripción de shopt bajo ÓRDENES INTERNAS DEL SHELL más adelante), las líneas  se
       añaden al fichero de historia; si no, el fichero de historia se sobreescribe.  Si HISTFILE
       no está definido, o si no se puede escribir en el fichero de historia, la historia  no  se
       guarda. Tras guardar la historia, el fichero de historia se trunca para contener no más de
       HISTFILESIZE líneas. Si HISTFILESIZE no está definido, no se trunca.

       La orden interna fc (vea ÓRDENES INTERNAS DEL SHELL abajo) puede emplearse para  listar  o
       editar  y  re-ejecutar  una  porción de la lista de historia.  La orden interna history se
       puede utilizar para mostrar o modificar la lista de historia y  manipular  el  fichero  de
       historia.  Cuando se emplea la edición de líneas de órdenes, están disponibles las órdenes
       de búsqueda en cada modo de edición que proporcionan acceso a la lista de historia.

       El shell permite el control sobre qué órdenes se guarden en  la  lista  de  historia.  Las
       variables  HISTCONTROL  y  HISTIGNORE  se  pueden  definir  de  forma  que el shell guarde
       solamente un subconjunto de las órdenes introducidas.  La opción  del  shell  cmdhist,  si
       está  habilitada, hace que el shell intente guardar cada línea de una orden multi-línea en
       la misma entrada de la  historia,  añadiendo  punto  y  comas  donde  sea  necesario  para
       preservar  la corrección sintáctica.  La opción del shell lithist hace que el shell guarde
       la orden con saltos de línea empotrados en vez de punto y comas. Vea la descripción de  la
       orden  interna  shopt  abajo  en  ÓRDENES  INTERNAS  DEL SHELL para información sobre cómo
       establecer y anular opciones del shell.

EXPANSIÓN DE HISTORIA

       El shell admite una característica de expansión de historia que es parecida a la expansión
       de  historia  en  csh.   Esta  sección  describe  qué  características  sintácticas  están
       disponibles. Esta  característica  está  habilitada  de  forma  predeterminada  en  shells
       interactivos,  y  puede ser desactivada mediante la opción +H de la orden interna set (vea
       ÓRDENES INTERNAS DEL SHELL abajo). Los shells no interactivos no realizan la expansión  de
       la historia de forma predeterminada.

       Las  expansiones de historia introducen palabras desde la lista de historia en el flujo de
       entrada, facilitando así la repetición de órdenes, la inserción de argumentos de una orden
       anterior  en  la línea de entrada en curso, o la corrección rápida de errores en una orden
       anterior.

       La expansión de historia se realiza inmediatamente tras la lectura de una línea  completa,
       antes  de  que el shell la divida en palabras. Tiene lugar en dos fases.  En la primera se
       determina qué línea de la lista de historia hay que emplear durante la sustitución.  En la
       segunda  se  seleccionan  porciones de esa línea para su inclusión en la actual.  La línea
       seleccionada desde la historia es el evento, y la porción de esa línea  sobre  la  que  se
       actúa  son  palabras.   Se  dispone  de  varios  modificadores para manipular las palabras
       seleccionadas. La línea se divide en palabras de la misma manera  que  cuando  se  lee  la
       entrada, de forma que ciertas palabras separadas por meta-caracteres rodeadas por comillas
       se consideran una sola  palabra.   Las  expansiones  de  historia  se  introducen  por  la
       aparición  del  carácter  de expansión de historia, que es por omisión !.  Sólo las barras
       inversas (\) y las comillas simples pueden proteger al carácter de expansión de historia.

       Se pueden emplear ciertas opciones que se ponen con la orden interna shopt para cambiar el
       comportamiento de la expansión de historia.  Si la opción del shell histverify está activa
       (vea la  descripción  de  la  orden  interna  shopt),  y  se  está  usando  readline,  las
       sustituciones  de  historia no se pasan inmediatamente al analizador del shell.  En vez de
       eso, la línea expandida se vuelve a cargar en el búfer de edición  de  readline  para  una
       modificación  posterior.  Si se está usando readline y la opción del shell histreedit está
       activada, una sustitución de historia fallida se volverá a cargar en el búfer  de  edición
       de readline para su corrección.  La opción -p de la orden interna history se puede emplear
       para ver qué hará una expansión de historia antes de usarse.  La opción  -s  de  la  orden
       interna  history se puede emplear para añadir órdenes al final de la lista de historia sin
       ejecutarlas realmente, de modo que estén disponibles para rellamadas posteriores.

       El shell permite el control de los diversos  caracteres  empleados  por  el  mecanismo  de
       expansión de historia (vea la descripción de histchars arriba en Variables del shell).

   Designadores de eventos
       Un  designador  de evento es una referencia a una entrada de línea de orden en la lista de
       historia.

       !      Comenzar una sustitución de historia, excepto cuando le siga un  blanco,  salto  de
              línea, = o (.
       !n     Referirse a la línea de órdenes número n.
       !-n    Referirse a la línea de orden en curso menos n.
       !!     Referirse a la orden anterior. Esto es lo mismo que `!-1'.
       !cadena
              Referirse a la orden más reciente que comience con cadena.
       !?cadena[?]
              Referirse  a  la  orden  más  reciente  que  contenga cadena.  El ? del final puede
              omitirse si a cadena le sigue inmediatamente un salto de línea.
       ^cadena1^cadena2^
              Sustitución rápida. Repetir la última  orden,  reemplazando  cadena1  con  cadena2.
              Equivalente a ``!!:s/cadena1/cadena2/'' (vea Modificadores abajo).
       !#     La línea de orden entera tecleada hasta ahora.

   Designadores de palabras
       Los  designadores  de  palabras se emplean para seleccionar las palabras que se deseen del
       evento.  Un : separa la  especificación  de  evento  del  designador  de  palabra.   Puede
       omitirse  si  el  designador  de palabra comienza con un ^, $, *, -, o %.  Las palabras se
       numeran desde el principio de la línea, con la primera palabra denotada por 0 (cero).  Las
       palabras se insertan en la línea en curso separadas por espacios simples.

       0 (cero)
              La palabra número 0. Para el shell, ésta es la palabra de la orden.
       n      La n-sima palabra.
       ^      El primer argumento. Esto es, la palabra número 1.
       $      El último argumento.
       %      La palabra que concordaba con la más reciente búsqueda con `?cadena?'.
       x-y    Un rango de palabras; `-y' abrevia `0-y'.
       *      Todas  las  palabras  menos la número cero. Esto es un sinónimo de `1-$'.  No es un
              error emplear * si sólo hay una palabra en el evento; en este caso se  devuelve  la
              cadena vacía.
       x*     Abreviatura de x-$.
       x-     Abrevia x-$ como x*, pero omite la última palabra.

       Si  se  suministra  un  designador  de palabra sin una especificación de evento, se usa la
       orden anterior como el evento.

   Modificadores
       Tras el designador opcional de palabra, puede haber una secuencia de  uno  o  más  de  los
       siguientes modificadores, precedido cada uno por un `:'.

       h      Quitar un componente final de nombre de fichero, dejando sólo la parte izquierda.
       t      Quitar  todos  los  primeros componentes de un nombre de fichero, dejando la última
              parte.
       r      Quitar un sufijo final de la forma .xxx, dejando el nombre base.
       e      Quitar todo salvo el sufijo final.
       p      Mostrar la nueva orden pero no ejecutarla.
       q      Entrecomillar las palabras sustituidas, escapando de posteriores sustituciones.
       x      Entrecomillar las palabras sustituidas como con q, pero romper  entre  palabras  en
              los blancos y saltos de línea.
       s/viejo/nuevo/
              Substituir nuevo por la primera ocurrencia de viejo en la línea de evento. Se puede
              emplear cualquier delimitador en vez de /. El delimitador final es opcional  si  es
              el  último  carácter de la línea de evento. El delimitador puede entrecomillarse en
              viejo y nuevo con una sola barra inclinada inversa.  Si  &  aparece  en  nuevo,  se
              reemplaza  por  viejo.  Una sola barra inversa protegerá el &. Si viejo está vacío,
              se pone al último viejo substituido, o, si no tuvo  lugar  ninguna  sustitución  de
              historia previa, a la última cadena en una búsqueda del tipo !?cadena[?].
       &      Repetir la sustitución anterior.
       g      Hace que los cambios se apliquen sobre la línea entera de evento. Esto se emplea en
              conjunción con `:s' (p.ej., `:gs/viejo/nuevo/')  o  `:&'.   Si  se  usa  con  `:s',
              cualquier  delimitador  se  puede utilizar en lugar de /, y el delimitador final es
              opcional si es el último carácter de la linea de evento.

ÓRDENES INTERNAS DEL SHELL

       A menos que se diga otra cosa, cada orden interna documentada en esta sección  que  acepte
       opciones precedidas por - también acepta -- para significar el final de las opciones.
        : [argumentos]
              Sin  efecto; la orden no hace nada más que expandir argumentos y realizar cualquier
              redirección que se haya especificado. Se devuelve un código de salida cero.

        .  nombre-fichero [argumentos]
       source nombre-fichero [argumentos]
              Lee y ejecuta órdenes desde  nombre-fichero  en  el  entorno  actual  del  shell  y
              devuelve el estado de salida de la última orden ejecutada desde nombre-fichero.  Si
              nombre-fichero no contiene una barra inclinada, se usan los nombres de  fichero  en
              PATH para encontrar el directorio que contenga a nombre-fichero.  El fichero que se
              busca en PATH no necesita ser ejecutable. Se busca en el directorio de  trabajo  si
              no  se  encontró  el  fichero en PATH.  Si la opción sourcepath de la orden interna
              shopt está desactivada, la búsqueda en PATH  no  se  realiza.   Si  se  suministran
              argumentos,  se convierten en los parámetros posicionales cuando se ejecuta nombre-
              fichero. Si no, los parámetros posicionales permanecen inalterados.  El  estado  de
              retorno  es  el  de la última orden de dentro del guión (0 si no se ejecutó ninguna
              orden), y `falso' si nombre-fichero no se encontró o no se pudo leer.

       alias [-p] [nombre[=valor] ...]
              Alias sin argumentos o con la opción -p muestra la lista de alias en la forma alias
              nombre=valor  en  la salida estándar.  Cuando se dan argumentos, se define un alias
              para cada nombre cuyo valor se da.  Un espacio extra tras  valor  hace  que  en  la
              siguiente  palabra  se  realice la sustitución de alias cuando el alias se expande.
              Para cada nombre en la lista de argumentos para el que no se suministre  un  valor,
              se muestran el nombre y el valor del alias.  Alias devuelve `verdad' a menos que se
              dé un nombre para el que no se haya definido un alias.

       bg [espectrab]
              Reanuda el trabajo suspendido espectrab  en  segundo  plano,  como  si  se  hubiera
              arrancado  con  &.  Si espectrab no está presente, se emplea la noción que tiene el
              shell del trabajo en curso.  bg espectrab devuelve 0 a menos que se ejecute  cuando
              el  control  de  trabajos esté deshabilitado, o cuando se ejecute con el control de
              trabajos habilitado si espectrab no se encontró, o cuando  se  hubo  arrancado  sin
              control de trabajos.

       bind [-m mapatecl] [-lpsvPSV]
       bind [-m mapatecl] [-q función] [-u función] [-r sectecl]
       bind [-m mapatecl] -f nombre-fichero
       bind [-m mapatecl] sectecl:nombre-función
              Muestra  las  asociaciones actuales de readline de teclas y funciones, o asocia una
              secuencia de teclas a una función o macro de readline.   La  sintaxis  aceptada  es
              idéntica  a  la  de  .inputrc,  pero cada asociación debe pasarse como un argumento
              separado; p.ej., '"\C-x\C-r": re-read-init-file'.  Las opciones, si se dan,  tienen
              los siguientes significados:
              -m mapatecl
                     Usar  mapatecl  como  el  mapa  de  teclado  que  va  a  verse  afectado por
                     subsiguientes asociaciones.  Los nombres aceptables de mapatecl  son  emacs,
                     emacs-standard,  emacs-meta,  emacs-ctlx,  vi,  vi-command  y vi-insert.  vi
                     equivale a vi-command; emacs es equivalente a emacs-standard.
              -l     Lista los nombres de todas las funciones de readline.
              -p     Muestra los nombres de funciones de readline de tal forma que puedan  volver
                     a ser leídas.
              -P     Lista los nombres de funciones de readline actuales y las asociaciones.
              -v     Muestra los nombres de variables de readline y los valores de tal manera que
                     puedan volver a ser leídas.
              -V     Lista los nombres de variables de readline actuales y los valores.
              -s     Muestra las secuencias de teclas  de  readline  asociadas  a  macros  y  las
                     cadenas correspondientes de tal manera que puedan ser leídas de nuevo.
              -S     Muestra  las  secuencias  de  teclas  de  readline  asociadas a macros y las
                     cadenas de caracteres correspondientes.
              -f nombre-fichero
                     Lee las asociaciones de teclas desde nombre-fichero.
              -q función
                     Pregunta qué teclas llaman a la función especificada.
              -u función
                     Desenlaza todas las teclas asociadas a la función nombrada.
              -r sectecl
                     Borra cualquier asociación actual de sectecl.

              El valor devuelto es 0 a menos que se dé una opción no reconocida o que  ocurra  un
              error.

       break [n]
              Sale  de  un  bucle  for,  while,  until,  o select.  Si se especifica n, sale de n
              niveles.  n debe ser ≥ 1.  Si n es mayor que el número de bucles, se sale de todos.
              El  valor  devuelto es 0 a menos que el shell no esté ejecutando un bucle cuando se
              ejecute break.

       builtin orden-interna [argumentos]
              Ejecuta la orden interna  del  shell  especificada,  pasándole  los  argumentos,  y
              devuelve  su  estado  de  salida.   Esto  es útil cuando se define una función cuyo
              nombre es el mismo que una orden interna del shell, reteniendo la funcionalidad  de
              esa  orden interna dentro de la función.  Por ejemplo, la orden interna cd se puede
              redefinir  normalmente  de  esta  manera.   El  estado  de  salida  es  `falso'  si
              orden-interna no es una orden incorporada del shell.

       cd [-LP] [dir]
              Cambia  el  directorio  de  trabajo  en  curso a dir.  La variable HOME contiene el
              nombre del directorio predeterminado dir.  La variable CDPATH define el  camino  de
              búsqueda  del directorio que contenga dir.  Los nombres de directorios alternativos
              en CDPATH se separan por dos puntos (:). Un nombre de directorio vacío en CDPATH es
              lo  mismo  que el directorio de trabajo en curso, o sea, ``.''. Si dir comienza con
              una barra inclinada (/), entonces CDPATH no se usa. La opción -P dice que se  va  a
              emplear  la  estructura  física  de directorios en vez de seguir enlaces simbólicos
              (vea también la opción -P de la orden interna set); la opción -L hace que se  sigan
              siempre  los enlaces simbólicos. El argumento - es equivalente a $OLDPWD.  El valor
              de retorno es `verdad' si el directorio de trabajo se cambió con éxito; `falso'  en
              otro caso.

       command [-pVv] orden [arg ...]
              Ejecuta  orden con args suprimiendo la búsqueda normal de funciones del shell. Sólo
              se ejecutarán órdenes incorporadas en  el  shell  o  programas  encontrados  en  la
              variable  PATH.   Si  se  da  la  opción -p, se busca la orden empleándose un valor
              predeterminado para PATH que garantiza encontrar todas las utilidades estándar  del
              sistema.   Si  se da la opción -V o la -v, se muestra una descripción de orden.  La
              opción -v muestra una sola  palabra  que  indica  la  orden  o  nombre  de  fichero
              ejecutable  empleado  para la llamada a orden; la opción -V produce una descripción
              algo más prolija.  Si se dan las opciones -V o -v, el estado  de  salida  es  0  si
              orden  se encontró, y 1 si no. Si no se da ninguna de las dos opciones y ocurrió un
              error u orden no se encontró, el estado de salida es  127.  Si  no,  el  estado  de
              salida de command es el estado de salida de orden.

       continue [n]
              Reanuda la siguiente iteración del bucle for, while, until, o select donde estamos.
              Si se especifica n, la reanudación es en el n-simo bucle que nos rodea.  n debe ser
              ≥ 1.  Si n es mayor que el número de bucles que nos rodean, se reanuda el bucle más
              exterior (el de ``más alto nivel''). El valor de retorno es 0 a menos que el  shell
              no esté ejecutando un bucle cuando se ejecute continue.

       declare [-afFirx] [-p] [nombre[=valor]]
       typeset [-afFirx] [-p] [nombre[=valor]]
              Declaran  variables  o  les dan atributos.  Si no se dan nombres, entonces muestran
              los valores de las variables.  La opción -p mostrará los  atributos  y  valores  de
              cada nombre.  Cuando se emplee -p, otras opciones que se hayan dado no se tienen en
              cuenta.  La opción -F inhibe la presentación de las definiciones de funciones; sólo
              se  muestran  sus nombres y atributos.  La opción -F implica -f.  Se pueden emplear
              las siguientes opciones para restringir la  salida  a  variables  con  el  atributo
              especificado o para dar atributos a variables:
              -a     Cada nombre es una variable vector (vea Vectores arriba).
              -f     Usar solamente nombres de funciones.
              -i     La  variable  se  trata  como un entero; se realiza la evaluación aritmética
                     (vea EVALUACIÓN ARITMÉTICA) cuando a la variable se le asigne un valor.
              -r     Hace que nombres sean de lectura exclusiva.   A  estos  nombres  no  se  les
                     pueden  asignar valores por medio de subsiguientes asignaciones, ni se puede
                     anular su definición con unset.
              -x     Marca nombres para la  exportación  a  órdenes  subsecuentes  a  través  del
                     entorno.

              Usar  `+' en vez de `-' desactiva el atributo en vez de activarlo, con la excepción
              de que no puede emplearse +a para destruir una variable vector. Cuando  se  usa  en
              una  función, hace local cada nombre, como con la orden interna local.  El valor de
              retorno es 0 a menos que se encuentre una opción inválida, se intente  definir  una
              función  utilizando  "-f  fuu=bar",  se  intente asignar un valor a una variable de
              lectura exclusiva, se intente asignar un valor a una variable vector sin emplear la
              sintaxis  de  asignación compuesta (vea Vectores arriba), uno de los nombres no sea
              un nombre válido de variable del shell, se intente desactivar el estado de  lectura
              exclusiva  para  una  variable  de sólo lectura, se intente desactivar el estado de
              vector para una variable vector, o se intente mostrar una función no existente  con
              -f.

       dirs [-clpv] [+n] [-n]
              Sin  opciones,  muestra  la  lista de directorios actualmente recordados.  La forma
              predeterminada de mostrarlos es en una sola línea con los  nombres  de  directorios
              separados  por  espacios.   Los  directorios se añaden a la lista (en realidad, una
              pila) con la orden pushd; la orden popd los quita de la pila.
              +n     Muestra la n-sima entrada contando desde la izquierda de la  lista  mostrada
                     por dirs cuando se llama sin opciones, empezando por cero.
              -n     Muestra la n-sima entrada contando desde la derecha de la lista mostrada por
                     dirs cuando se llama sin opciones, empezando por cero.
              -c     Limpia la pila de directorios borrando todas las entradas.
              -l     Produce un listado más largo; el formato predeterminado  de  listado  emplea
                     una  tilde  de  la  eñe  para  señalar  el directorio inicial de trabajo (el
                     "hogar").
              -p     Muestra la pila de directorios con una entrada por cada línea.
              -v     Muestra la pila de directorios con una entrada por  línea,  prefijando  cada
                     entrada con su índice en la pila.

              El  valor  de retorno es 0 a menos que se dé una opción inválida o que n indexe más
              allá del final de la pila de directorios.

       disown [-ar] [-h] [espectrab ...]
              Sin opciones, cada espectrab se quita de la tabla de trabajos activos.  Si se da la
              opción  -h, cada espectrab no se quita de la tabla, sino que se marca de manera que
              no se le enviará la señal SIGHUP si el shell recibe una señal SIGHUP.   Si  no  hay
              ningún espectrab presente, y ni se dan las opciones -a ni -r, se utiliza el trabajo
              en curso.  Si no se suministra espectrab, la opción -a significa  quitar  o  marcar
              todos  los trabajos; la opción -r sin un argumento espectrab restringe la operación
              a los trabajos en ejecución.  El valor de retorno es 0 a menos que espectrab no  se
              refiera a un trabajo válido.

       echo [-neE] [arg ...]
              Repite   los  args,  separados  por  espacios,  seguidos por un salto de línea.  El
              estado de retorno es siempre 0.  Si se especifica -n, se suprime el salto de  línea
              final.   Si  se  da  la  opción  -e,  se activa la interpretación de los siguientes
              caracteres de escape (con barra inversa). La opción -E desactiva la  interpretación
              de  estos  caracteres  de escape, incluso en sistemas donde se interpreten de forma
              predeterminada.  echo  no  interpreta  --  como  el  fin  de  las  opciones.   echo
              interpreta las siguientes secuencias de escape:
              \a     alerta (pito)
              \b     espacio atrás
              \c     suprime el salto de línea final
              \e     un carácter Escape
              \f     salto de página
              \n     nueva línea
              \r     retorno de carro
              \t     tabulador horizontal
              \v     tabulador vertical
              \\     barra inclinada invertida
              \nnn   el carácter cuyo código es el valor octal nnn (de uno a tres dígitos)
              \xnnn  el carácter cuyo código es el valor hexadecimal nnn (de uno a tres dígitos)

       enable [-adnps] [-f nombre-fichero] [nombre ...]
              Activa y desactiva órdenes internas incorporadas en el shell.  Desactivar una orden
              incorporada en el shell permite que un programa cuya imagen ejecutable esté  en  el
              disco con el mismo nombre, se ejecute sin tener que especificar un camino completo,
              aun cuando el shell normalmente busca las órdenes internas antes  que  las  órdenes
              externas  en  disco.   Si  se  da  -n,  cada nombre se desactiva; si no, nombres se
              activan. Por ejemplo, para emplear el programa binario test encontrado en  el  PATH
              en vez de la versión incorporada en el shell, ejecute enable -n test.  La opción -f
              significa cargar la nueva orden  incorporada  nombre  desde  el  objeto  compartido
              nombre-fichero, en sistemas que admiten la carga dinámica. La opción -d borrará una
              orden interna cargada previamente con -f.  Si no se dan argumentos nombre, o si  se
              da  la  opción -p, se muestra una lista de órdenes internas del shell.  Sin ninguna
              opción más, la lista consiste en todas las órdenes internas activas.  Si se da  -n,
              sólo  se  muestran las órdenes desactivadas.  Si se da -a, la lista impresa incluye
              todas las órdenes internas, con una indicación en cada una de si  está  activada  o
              no.   Si  se  da  -s,  la  salida se restringe a las órdenes internas especiales de
              POSIX.  El valor de retorno es 0 a menos que un nombre no sea una orden interna del
              shell  o  que haya un problema cargando una nueva orden incorporada desde un objeto
              compartido.

       eval [arg ...]
              Los args se leen y concatenan juntos para formar una sola orden. Entonces el  shell
              lee  y ejecuta esta orden, y su estado de salida se devuelve como el valor de eval.
              Si no hay args, o solamente argumentos vacíos, eval devuelve 0.

       exec [-cl] [-a nombre] [orden [argumentos]]
              Si se especifica orden, reemplaza al shell.  No se crea ningún proceso  nuevo.  Los
              argumentos  se  convierten  en  los argumentos de orden.  Si se da la opción -l, el
              shell pone un guión en el argumento número cero pasado a orden.   Esto  es  lo  que
              hace  login(1).  La opción -c hace que orden se ejecute con un entorno vacío. Si se
              da -a , el shell pasa nombre como el argumento número cero de la  orden  ejecutada.
              Si  orden no puede ejecutarse por alguna razón, un shell no interactivo se acaba, a
              menos que se haya activado la opción del shell  execfail,  en  cuyo  caso  devuelve
              `fallo'.   Un shell interactivo devuelve `fallo' si el fichero no puede ejecutarse.
              Si orden no se especifica, cualquier redirección tiene efecto en el shell en curso,
              y  el estado devuelto es 0. Si hay un error de redirección, el estado de retorno es
              1.

       exit [n]
              Hace que el shell acabe con un estado de valor n. Si n se omite, el valor de salida
              es  el de la última orden ejecutada.  Se ejecuta una trampa puesta en EXIT antes de
              que el shell termine.

       export [-fn] [nombre[=palabra]] ...
       export -p
              Los nombres suministrados se marcan  para  exportación  automática  al  entorno  de
              órdenes  que  se ejecuten de ahí en adelante. Si la opción -f se da, los nombres se
              referirán a funciones.  Si no se dan nombres, o si se da la opción -p,  se  muestra
              una  lista  de  todos los nombres que están exportados en este shell.  La opción -n
              hace que la propiedad de exportación se quite de las variables  nombradas;  o  sea,
              que se quiten del entorno.  export devuelve un estado de salida de 0 a menos que se
              encuentre una opción inválida, uno de los  nombres  no  sea  un  nombre  válido  de
              variable del shell, o que se dé -f no siendo nombre una función.

       fc [-e editor] [-nlr] [primero] [último]
       fc -s [pat=rep] [ord]
              Corrige orden (Fix Command). En la primera forma, se selecciona un rango de órdenes
              desde primero hasta último de la  lista  de  historia.   Primero  y  último  pueden
              especificarse  como  una  cadena  de caracteres (para localizar la última orden que
              empezara con esa cadena) o como un número (un índice en la lista de historia, donde
              un  número  negativo  se emplea como un desplazamiento a partir del número de orden
              actual). Si no se da último, se pone a la orden en curso para un listado (de  forma
              que  fc  -l -10 muestra las 10 últimas órdenes) o a primero en otro caso.  Si no se
              especifica primero, se pone a la orden previa para una edición  y  a  -16  para  un
              listado.

              La  opción  -n suprime los números de orden en un listado. La opción -r invierte el
              orden de los mandatos. Si se da la opción -l , las órdenes se listan en  la  salida
              estándar.  Si no, se llama al editor dado por editor en un fichero conteniendo esas
              órdenes.  Si no se da editor, se emplea el valor de la variable FCEDIT, o el  valor
              de  EDITOR si FCEDIT no está definido. Si no está definida ni una variable ni otra,
              vi es el editor que se empleará. Cuando la edición se haya completado, las  órdenes
              editadas se muestran y ejecutan.

              En  la  segunda  forma,  orden  se  re-ejecuta  tras  que  cada instancia de pat se
              reemplace por rep.  Un alias de utilidad para emplear con esto es ``r=fc  -s'',  de
              tal modo que al teclear ``r cc'' se ejecute la última orden que empezara con ``cc''
              y que al teclear ``r'' se re-ejecute la última orden.

              Si se usa la primera forma, el valor de retorno es 0 a menos que se  encuentre  una
              opción  inválida  o  que  primero o último especifiquen líneas de historia fuera de
              rango.  Si se suministra la opción -e, el valor de retorno es el de la última orden
              ejecutada,  o  `fallo' si ocurre un error con el fichero temporal de órdenes. Si se
              emplea la segunda forma, el estado de retorno es de la orden reejecutada,  a  menos
              que  ord  no  especifique  una  línea  válida de historia, en cuyo caso fc devuelve
              `fallo'.

       fg [espectrab]
              Reanuda espectrab en primer plano, y lo hace ser el trabajo en curso.  Si espectrab
              no  está  presente,  se  usa  la noción que tiene el shell del trabajo en curso. El
              valor de retorno es el de la orden puesta en primer plano, o `fallo' si se  ejecuta
              fg  cuando  el  control  de  trabajos  está desactivado o, cuando se ejecuta con el
              control de trabajos activado, si  espectrab  no  especifica  un  trabajo  válido  o
              espectrab se refiere a una trabajo que se arrancó sin control de trabajos.

       getopts cadenaopcs nombre [args]
              getopts   se   usa  en  procedimientos  del  shell  para  analizar  los  parámetros
              posicionales.  cadenaopcs contiene las letras de opción que se  reconocerán;  si  a
              una  letra  le  sigue  un  signo  de  dos  puntos, se espera que la opción tenga un
              argumento, que debería estar separado de ella por espacio en blanco.  Cada vez  que
              se  llama,  getopts  pone  la  siguiente  opción  en  la variable del shell nombre,
              inicializando nombre si no existe, y  el  índice  del  siguiente  argumento  a  ser
              procesado en la variable OPTIND.  OPTIND se inicializa a 1 cada vez que se llama al
              shell o al guión del shell. Cuando una opción requiera un argumento,  getopts  pone
              ese   argumento   en   la  variable  OPTARG.   El  shell  no  pone  a  cero  OPTIND
              automáticamente; debe ser puesto a cero  manualmente  entre  llamadas  múltiples  a
              getopts  dentro  de la misma llamada al shell si hubiera que usar un nuevo conjunto
              de parámetros.

              Cuando se encuentra el fin de las opciones, getopts sale con un  valor  de  retorno
              mayor  que  cero.   OPTIND  se  pone  al  índice del primer argumento que no es una
              opción, y nombre se pone a "?".

              getopts normalmente analiza  los  parámetros  posicionales,  pero  si  se  dan  más
              argumentos en args, getopts analiza aquéllos en su lugar.

              getopts  puede  informar  de  errores  de  dos  maneras.  Si  el primer carácter de
              optstring es dos puntos, se emplea un informe de  error  silencioso.   En  un  modo
              normal  de  operación  se  muestran  mensajes  de diagnósticos cuando se encuentran
              opciones inválidas o faltan argumentos  de  opciones  que  los  requieran.   Si  la
              variable  OPTERR se pone a 0, no se mostrará ningún mensaje de error, incluso si el
              primer carácter de optstring no es dos puntos.

              Si se ve una opción inválida, getopts pone ? en nombre y, si no estamos en el  modo
              silencioso,  se  muestra  un  mensaje  de  error  y se anula OPTARG.  Si getopts es
              silencioso, el carácter de opción encontrado se pone en  OPTARG  y  no  se  muestra
              ningún mensaje de diagnóstico.

              Si  no  se encuentra un argumento necesario, y getopts no es silencioso, se pone un
              signo de cierre de interrogación (?) en nombre, OPTARG se anula, y  se  muestra  un
              mensaje de diagnóstico.  Si getopts es silencioso, entonces se pone un signo de dos
              puntos (:) en nombre y OPTARG toma el valor del carácter de opción encontrado.

              getopts devuelve `verdad' si una opción, especificada o no, se encuentra.  Devuelve
              `falso' si se encuentra el final de las opciones o si ocurre un error.

       hash [-r] [-p nombre-fichero] [nombre]
              Para  cada  nombre,  se  determina  el  nombre completo del fichero correspondiente
              buscando los directorios en $PATH y dicho nombre completo se registra.  Si se da la
              opción  -p  no  se busca en el PATH, y se emplea en su lugar nombre-fichero como el
              nombre completo de fichero para la orden.  La opción -r hace que el shell se olvide
              de  todas  las  localizaciones  registradas.  Si  no  se dan argumentos, se muestra
              información acerca de las órdenes recordadas. El estado de  salida  es  `verdad'  a
              menos que un nombre no se encuentre o se dé una opción inválida.

       help [patrón]
              Muestra  información  de ayuda sobre las órdenes internas. Si se especifica patrón,
              help da ayuda detallada sobre todas las órdenes que concuerden con patrón;  si  no,
              se  muestra  ayuda  para  todas  las  órdenes internas y estructuras de control del
              shell. El estado de retorno es 0 a menos que ninguna orden concuerde con patrón.

       history [-c] [n]
       history -anrw [nombre-fichero]
       history -p arg [arg ...]
       history -s arg [arg ...]
              Sin opciones, muestra la lista de historia de órdenes con  números  de  línea.  Las
              líneas  marcadas  con  un * han sido modificadas. Un argumento de n lista solamente
              las últimas n líneas.  Si nombre-fichero se  da,  se  emplea  como  el  nombre  del
              fichero  de historia; si no, se usa el valor de HISTFILE.  Las opciones, si se dan,
              tienen los siguientes significados:
              -a     Añade las líneas de historia ``nuevas'' (las introducidas desde el inicio de
                     la sesión de bash en curso) al fichero de historia.
              -n     Lee  las  líneas  de  historia  que  aún  no  han sido leídas del fichero de
                     historia y las mete en la lista de historia actual.  Éstas  son  las  líneas
                     añadidas  al  fichero  de  historia  desde  el comienzo de la sesión de bash
                     actual.
              -r     Lee los contenidos del fichero de historia y los usa  como  la  historia  en
                     curso.
              -w     Escribe la historia en curso en el fichero de historia, sobreescribiendo sus
                     contenidos.
              -c     Limpia la lista de historia borrando todas las entradas.
              -p     Realiza la sustitución de historia de  los  siguientes  args  y  muestra  el
                     resultado  en  la salida estándar.  No almacena los resultados en el fichero
                     de historia.  Cada arg debe protegerse para  deshabilitar  la  expansión  de
                     historia normal.
              -s     Almacena  los  args en la lista de historia como una sola entrada. La última
                     orden en la lista de historia se elimina antes de que se añadan los args.

              El valor de retorno es 0 a menos que se encuentre una opción inválida o que  ocurra
              un error mientras se lee o se escribe el fichero de historia.

       jobs [-lnprs] [ espectrab ... ]
       jobs -x orden [ args ... ]
              La  primera  forma lista los trabajos activos. Las opciones tienen los significados
              siguientes:
              -l     Lista PIDs además de la información normal.
              -p     Lista solamente el PID del líder del grupo de proceso del trabajo.
              -n     Muestra información solamente sobre trabajos  que  han  cambiado  de  estado
                     desde que se notificó al usuario por última vez de su estado.
              -r     Restringe la salida a los trabajos en ejecución.
              -s     Restringe la salida a los trabajos parados.

              Si  se da espectrab, la salida se restringe a la información sobre ese trabajo.  El
              estado de retorno es cero a menos  que  se  encuentre  una  opción  inválida  o  se
              suministre un espectrab inválido.

              Si  se  da  la  opción -x, jobs reemplaza cualquier espectrab encontrado en orden o
              args con el ID de grupo de proceso correspondiente, y ejecuta orden pasándole args,
              devolviendo su estado de salida.

       kill [-s nombre-señal | -n numseñal | -nombre-señal] [pid | espectrab] ...
       kill -l [nombre-señal | status_salida]
              Envía  la  señal  especificada por nombre-señal o numseñal a los procesos nombrados
              por pid o espectrab.  nombre-señal es o bien un nombre de señal como SIGKILL  o  un
              número  de  señal;  numseñal es un número de señal. Si nombre-señal es un nombre de
              señal, éste puede darse con  o  sin  el  prefijo  SIG.   Si  nombre-señal  no  está
              presente,  entonces  se  supone  SIGTERM.   Un argumento de -l lista los nombres de
              señales.  Si se suministran más argumentos cuando se da -l, se listan  los  nombres
              de  las señales correspondientes a los argumentos, y el estado de retorno es 0.  El
              argumento status_salida de -l es un número que especifica o bien un número de señal
              o  el  estado  de  salida  de  un  proceso  terminado por una señal.  kill devuelve
              ``verdad'' si por lo menos se envió con éxito una señal, o ``falso'' si ocurrió  un
              error o se encontró una opción inválida.

       let arg [arg ...]
              Cada  arg  es  una expresión aritmética a ser evaluada (vea EVALUACIÓN ARITMÉTICA).
              Si el último arg se evalúa a 0, let devuelve 1; si no, devuelve 0.

       local [nombre[=valor] ...]
              Para cada argumento, se crea una variable local llamada nombre, y se le  asigna  el
              valor  valor.   Cuando  local se emplea dentro de una función, hace que la variable
              nombre tenga una visibilidad restringida a esa función y sus hijas.  Sin operandos,
              local escribe en la salida estándar una lista de las variables locales. Es un error
              emplear local fuera de una función. El estado de retorno es 0 a menos que local  se
              use fuera de una función, o se dé un nombre inválido.

       logout Hace terminar un shell de entrada.

       popd [-n] [+n] [-n]
              Quita entradas de la pila de directorios. Sin argumentos, desapila el directorio de
              la cima de la pila,  y  realiza  un  cd  al  nuevo  directorio  de  la  pila.   Los
              argumentos, si se suministran, tienen los siguientes significados:
              +n     Quita la n-sima entrada contando desde la izquierda de la lista mostrada por
                     dirs,  empezando  por  cero.  Por  ejemplo:  ``popd  +0''  quita  el  primer
                     directorio, ``popd +1'' el segundo.
              -n     Quita  la  n-sima entrada contando desde la derecha de la lista mostrada por
                     dirs,  empezando  por  cero.  Por  ejemplo:  ``popd  -0''  quita  el  último
                     directorio, ``popd -1'' el penúltimo.
              -n     Suprime  el  normal cambio de directorio cuando se desapilan directorios, de
                     forma que solamente la pila se manipula.

              Si la orden popd es exitosa, también se realiza un dirs, y el estado de retorno  es
              0.   popd  devuelve  `falso'  si  se  encuentra  una  opción  inválida,  la pila de
              directorios está vacía, se especifica una entrada de  la  pila  de  directorios  no
              existente, o falla el cambio de directorio.

       printf formato [argumentos]
              Escribe  los  argumentos  formateados  en  la  salida  estándar bajo el control del
              formato.  El formato es una  cadena  de  caracteres  que  contiene  tres  tipos  de
              objetos:  caracteres  normales,  que  simplemente  se copian en la salida estándar,
              caracteres de secuencias de escape,  que  se  convierten  y  copian  en  la  salida
              estándar,  y especificaciones de formato, cada una de las cuales causa la impresión
              del siguiente argumento sucesivo de una determinada manera.  Además de los formatos
              estándares  normales  de  printf(1),  %b  hace que printf expanda las secuencias de
              escape de barras inversas en el correspondiente argumento, y %q  causa  que  printf
              muestre  en  la salida el argumento correspondiente en un formato tal que pueda ser
              reutilizado como entrada para el shell.

              El  formato  se  reutiliza  tanto  como  sea  necesario  para  consumir  todos  los
              argumentos.   Si el formato requiere más argumentos que los que se suministran, las
              especificaciones de formato extra se comportan como si se  hubiera  dado  un  valor
              cero o una cadena vacía, según lo apropiado.

       pushd [-n] [dir]
       pushd [-n] [+n] [-n]
              Añade  un  directorio a la cima de la pila de directorios, o rota la pila, haciendo
              que el directorio de trabajo en curso sea la nueva cima de la pila. Sin argumentos,
              intercambia  los dos directorios de más arriba y devuelve 0, a menos que la pila de
              directorios esté vacía.  Los argumentos, si se suministran, tienen  los  siguientes
              significados:
              +n     Rota  la pila de forma que el n-simo directorio (contando desde la izquierda
                     de la lista mostrada por dirs, empezando por cero) esté en la cima.
              -n     Rota la pila de forma que el n-simo directorio (contando desde la derecha de
                     la lista mostrada por dirs, empezando por cero) esté en la cima.
              -n     Suprime  el  cambio  normal  de directorio cuando se añaden directorios a la
                     pila, de forma que solamente se manipula la pila.
              dir    Añade dir a  la  pila  de  directorios  en  la  cima,  haciéndolo  el  nuevo
                     directorio de trabajo.

              Si  la  orden  pushd  acaba  con éxito, se realiza un dirs también. Si se emplea la
              primera forma, pushd devuelve 0 a menos que falle el cambio a dir.  Con la  segunda
              forma,  pushd  devuelve  0  a  menos  que la pila de directorios esté vacía, que se
              especifique un elemento de la pila de directorios inexistente, o que el  cambio  de
              directorio falle.

       pwd [-LP]
              Muestra  el  nombre  de  fichero  absoluto  del directorio de trabajo en curso.  El
              nombre de fichero mostrado no contiene enlaces simbólicos si se da la opción  -P  o
              está puesta la opción -o physical de la orden interna set.  Si se usa la opción -L,
              los enlaces simbólicos se siguen.  El estado de retorno es 0 a menos que ocurra  un
              error mientras se lea el nombre del directorio actual o se dé una opción inválida.

       read [-er] [-a array] [-p prompt] [nombre ...]
              Se  lee  una  línea  desde  la  entrada estándar, y la primera palabra se asigna al
              primer nombre, la segunda palabra al segundo nombre, y así sucesivamente,  con  las
              palabras  que  sobren  y sus separadores intervinientes asignadas al último nombre.
              Si hay menos palabras leídas de la entrada estándar que nombres, a los sobrantes se
              les asignan valores vacíos.  Se emplean los caracteres en IFS para dividir la línea
              en palabras.  Las opciones, si se dan, tienen los siguientes significados:
              -r     Un par formado por una barra  inclinada  inversa  y  un  salto  de  línea  a
                     continuación  sí  es tenido en cuenta, y la barra inversa se considera parte
                     de la línea.
              -p     Muestra prompt, sin un salto de línea al final, antes de intentar leer  nada
                     de  la entrada. El indicador se muestra solamente si la entrada viene de una
                     terminal.
              -a     Las palabras se asignan secuencialmente  a  los  elementos  de  la  variable
                     vector  array,  empezando  por  0.  Se anula la posible previa definición de
                     array antes de que se asignen nuevos valores.  Otros argumentos nombre no se
                     tienen en consideración.
              -e     Si  la  entrada  estándar  viene  de  una  terminal, se emplea readline (vea
                     READLINE arriba) para obtener la línea.

              Si no se suministran nombres, la línea leída se asigna a  la  variable  REPLY.   El
              código de retorno es cero, a menos que se llegue al fin de la entrada.

       readonly [-apf] [nombre ...]
              Los nombres dados se marcan como de lectura exclusiva; los valores de estos nombres
              no pueden cambiarse por posteriores asignaciones.  Si se da la opción -f, se marcan
              así  las  funciones  correspondientes  a  los  nombres.  La opción -a restringe las
              variables a vectores.  Si no se da ningún argumento nombre, o si se  da  la  opción
              -p,  se  muestra una lista de todos los nombres de lectura exclusiva.  La opción -p
              hace que la salida se muestre en un formato que puede ser reutilizado como entrada.
              El  estado de retorno es 0 a menos que se encuentre una opción inválida, uno de los
              nombres no sea un nombre válido de variable del shell, o se dé -f con un nombre que
              no es una función.

       return [n]
              Hace  que una función acabe y devuelva el valor especificado por n.  Si n se omite,
              el estado devuelto es el de la última orden ejecutada en el cuerpo de  la  función.
              Si  se  emplea  fuera  de una función, pero durante la ejecución de un guión por la
              orden .  (source), hace que el shell pare la ejecución de ese guión y devuelva o  n
              o  el estado de salida de la última orden ejecutada dentro del guión como el estado
              de salida del guión. Si se emplea fuera de una función y no durante la ejecución de
              un guión por ., el estado de salida es `falso'.

       set [--abefhkmnptuvxBCHP] [-o opción] [arg ...]
              Sin opciones, se muestra el nombre y valor de cada variable del shell en un formato
              que  puede  ser  reutilizado  como  entrada.   La  salida  se  clasifica  según  la
              localización  en  curso.   Cuando se dan opciones, se establecen o quitan atributos
              del shell.  Cualesquier argumentos que queden tras que se procesen las opciones  se
              tratan  como valores para los parámetros posicionales y se asignan, en orden, a $1,
              $2, ...  $n.  Las opciones, si se especifican, tienen los siguientes significados:
              -a      Automáticamente  marca  variables,  que  se  modifiquen   o   creen,   para
                      exportación al entorno de las órdenes subsiguientes.
              -b      Informa   del   estado   de   los  trabajos  en  segundo  plano  terminados
                      inmediatamente, en vez de esperar a justo antes  de  mostrar  el  siguiente
                      indicador  primario.  Esto  sólo  es efectivo cuando el control de trabajos
                      está habilitado.
              -e      Sale inmediatamente si una orden simple (vea GRAMÁTICA  DEL  SHELL  arriba)
                      acaba  con  un  estado  distinto de cero. El shell no acaba si la orden que
                      falle es parte de un bucle until o while, parte de una sentencia if,  parte
                      de  una  lista  &&  o  ⎪⎪,  o si el valor devuelto por la orden se invierte
                      mediante !.
              -f      Deshabilita la expansión de nombres de caminos.
              -h      Recuerda la localización de órdenes una  vez  que  se  buscan  para  la  1ª
                      ejecución. Esto está habilitado de forma predeterminada.
              -k      Todos  los  argumentos  en forma de sentencias de asignación se ponen en el
                      entorno para una orden, no solamente aquéllos que precedan al nombre de  la
                      orden.
              -m      Modo  de  monitor.   Se  habilita  el control de trabajos. Esta opción está
                      puesta de forma predeterminada para shells interactivos en sistemas que  lo
                      admitan  (vea CONTROL DE TRABAJOS arriba). Los procesos en segundo plano se
                      ejecutan en un grupo de proceso separado, y se imprime cuando se  completan
                      una línea conteniendo su estado de salida.
              -n      Lee  órdenes pero no las ejecuta. Esto puede emplearse para comprobar si un
                      guión del shell tiene errores de sintaxis. Para  shells  interactivos  esta
                      opción no tiene efecto.
              -o nombre-opción
                      El nombre-opción puede ser uno de los siguientes:
                      allexport
                              Lo miso que -a.
                      braceexpand
                              Lo miso que -B.
                      emacs   Emplea  una  interfaz  de edición de líneas de órdenes al estilo de
                              emacs. Esto está activo de forma predeterminada cuando el shell  es
                              interactivo,   a   menos  que  se  haya  arrancado  con  la  opción
                              --noediting.
                      errexit Lo mismo que -e.
                      hashall Lo mismo que -h.
                      histexpand
                              Lo mismo que -H.
                      history Habilita la historia de órdenes, según  se  describió  arriba  bajo
                              HISTORIA.   Esta  opción  está  habilitada  por  omisión  en shells
                              interactivos.
                      ignoreeof
                              El efecto es como si  se  hubiera  ejecutado  la  orden  del  shell
                              IGNOREEOF=10 (vea Variables del shell arriba).
                      keyword Lo mismo que -k.
                      monitor Lo mismo que -m.
                      noclobber
                              Lo mismo que -C.
                      noexec  Lo mismo que -n.
                      noglob  Lo mismo que -f.
                      notify  Lo mismo que -b.
                      nounset Lo mismo que -u.
                      onecmd  Lo mismo que -t.
                      physical
                              Lo mismo que -P.
                      posix   Cambia  el comportamiento de bash donde la operación predeterminada
                              difiera del estándar POSIX 1003.2, de forma que se siga éste.
                      privileged
                              Lo mismo que -p.
                      verbose Lo mismo que -v.
                      vi      Emplea una interfaz de edición de la línea de órdenes al estilo  de
                              vi.
                      xtrace  Lo mismo que -x.
                      Si  se  da  -o  sin  ningún  nombre-opción,  se muestran los valores de las
                      opciones activas.  Si se da +o sin ningún nombre-opción, se muestra  en  la
                      salida  estándar  una  serie de órdenes set para recrear las opciones según
                      están puestas o no actualmente.
              -p      Activa el modo privilegiado.  En este modo, el  fichero  correspondiente  a
                      $ENV  no  es  procesado,  las  funciones  del  shell no se heredan desde el
                      entorno,y la variable SHELLOPTS, si aparece en el entorno, no se  tiene  en
                      consideración.   Esta opción se activa automáticamente en el arranque si el
                      identificador efectivo del usuario (o grupo) no es igual  al  identificador
                      real   del  usuario  (o  grupo).   Desactivar  esta  opción  hace  que  los
                      identificadores efectivos de usuario y grupo se pongan con los  valores  de
                      los identificadores reales de usuario y grupo respectivamente.
              -t      Sale tras leer y ejecutar una sola orden.
              -u      Trata  las variables no definidas como un error cuando realiza la expansión
                      de parámetros. Si la expansión se  intenta  hacer  sobre  una  variable  no
                      definida,  el  shell  muestra  un mensaje de error y, si no es interactivo,
                      sale con un estado distinto de cero.
              -v      Repite en la salida las líneas de entrada del shell tras leerlas.
              -x      Tras expandir cada orden simple, muestra el valor expandido de PS4, seguido
                      por la orden y sus argumentos expandidos.
              -B      El  shell  realiza la expansión de llaves (vea Expansión de llaves arriba).
                      Esto está activado de forma predeterminada.
              -C      Si  está  activo,  bash  no  sobreescribe  un  fichero  existente  con  los
                      operadores  de  redirección  >,  >&, ni <>.  Esto puede cambiarse cuando se
                      crean ficheros de salida mediante el empleo del operador >| en vez de >.
              -H      Permite la sustitución de historia mediante !.  Esta opción  está  activada
                      por omisión cuando el shell es interactivo.
              -P      Si  está  activada,  el  shell  no  sigue enlaces simbólicos cuando ejecuta
                      órdenes como cd que cambian el directorio de trabajo. En su lugar emplea la
                      estructura  de  directorio  física.  De forma predeterminada, bash sigue la
                      cadena  lógica  de  directorios  cuando  ejecuta  órdenes  que  cambian  el
                      directorio de trabajo.
              --      Si  a  esta  opción  no sigue ningún argumento más, entonces los parámetros
                      posicionales se anulan. Si no, los parámetros posicionales se ponen con los
                      valores dados por los args, incluso si alguno de ellos comienza con un -.
              -       Señala el final de las opciones, haciendo que el resto de args se asignen a
                      los parámetros posicionales. Las opciones -x y -v se desactivan.  Si no hay
                      más args, los parámetros posicionales permanecen sin cambios.

              Las  opciones  están  desactivadas de forma predeterminada a menos que se diga otra
              cosa. Usar + en vez de - hace que  estas  opciones  se  desactiven.   Las  opciones
              también  pueden  darse como argumentos al llamar al shell.  El conjunto de opciones
              activadas puede examinarse en $-.  El estado de retorno es siempre `verdad' a menos
              que se encuentre una opción inválida.

       shift [n]
              Los  parámetros  posicionales  desde  n+1 ... se renombran a $1 ...  Los parámetros
              representados por los números desde $# hasta $#-n+1  se  anulan.   n  debe  ser  un
              número  no  negativo menor o igual a $#.  Si n es 0, no se cambia ningún parámetro.
              Si n no se da, se supone 1.  Si n es mayor que $#, los parámetros  posicionales  no
              se  cambian.   El  estado de retorno es mayor que cero si n es mayor que $# o menor
              que cero; en otro caso es cero.

       shopt [-pqsu] [-o] [nombreopc ...]
              Cambia los  valores  de  variables  que  controlan  un  comportamiento  determinado
              opcional del shell. Sin opciones, o con la opción -p, se muestra una lista de todas
              las opciones disponibles, con una indicación en cada una de si está  activa  o  no.
              La  opción -p hace que la salida se muestre de una forma tal que pueda reutilizarse
              como entrada.  Otras opciones tienen los significados siguientes:
              -s     Activa (set) cada nombreopc.
              -u     Desactiva (unset) cada nombreopc.
              -q     Suprime la salida normal (modo silencioso); el estado de salida indica si el
                     nombreopc está activado o no.  Si se dan varios argumentos nombreopc con -q,
                     el estado de salida  es  cero  si  todos  los  nombreopcs  están  activados;
                     distinto de cero en otro caso.
              -o     Restringe los valores de nombreopc a aquéllos definidos para la opción -o de
                     la orden interna set.

              Si se emplean -s o -u sin argumentos nombreopc,  la  lista  mostrada  se  limita  a
              aquellas opciones que están activadas o desactivadas, respectivamente.  A menos que
              se diga otra  cosa,  las  opciones  de  shopt  están  inactivas  (unset)  de  forma
              predeterminada.

              El  estado  de  retorno  cuando  se listan opciones es cero si todos los nombreopcs
              están activos, distinto de cero en  otro  caso.  Cuando  se  activan  o  desactivan
              opciones,  el  estado  de salida es cero a menos que un nombreopc no sea una opción
              del shell válida.

              La lista de las opciones de shopt es:

              cdable_vars
                      Si está activa, un  argumento  de  la  orden  interna  cd  que  no  sea  un
                      directorio, se supone el nombre de una variable cuyo valor es el directorio
                      al que hay que cambiarse.
              cdspell Si está activa, se corregirán pequeños errores que hubiera en la  escritura
                      de  un componente directorio de una orden cd.  Los errores que se buscan se
                      refieren a caracteres transpuestos, un carácter que falte,  y  un  carácter
                      que sobre.  Si se encuentra una corrección, se muestra el nombre de fichero
                      corregido y la orden  procede.   Esta  opción  sólo  se  emplea  en  shells
                      interactivos.
              checkhash
                      Si  está  activa,  bash  comprueba  que una orden encontrada en la tabla de
                      dispersión existe antes de intentar ejecutarlo. Si una orden en la tabla de
                      dispersión ya no existe, se realiza una búsqueda normal en el PATH.
              checkwinsize
                      Si  está  activa, bash comprueba el tamaño de ventana tras cada orden y, si
                      es necesario, actualiza los valores de LINES y COLUMNS.
              cmdhist Si está activa, bash intenta guardar todas  las  líneas  de  una  orden  de
                      varias  líneas en la misma entrada de historia. Esto permite una re-edición
                      fácil de dichas órdenes.
              dotglob Si está activa, bash incluye los nombres de ficheros que comiencen  con  un
                      `.' en los resultados de la expansión de nombres de caminos.
              execfail
                      Si  está activa, un shell no interactivo no acabará si no puede ejecutar el
                      fichero especificado como un argumento de la orden interna exec.  Un  shell
                      interactivo no acaba si exec falla.
              expand_aliases
                      Si  está activa, los alias se expanden como se describió arriba bajo ALIAS.
                      Esta  opción  está  habilitada  de   forma   predeterminada   para   shells
                      interactivos.
              extglob Si  está  activa,  se  habilitan  las  características  de  concordancia de
                      patrones extendidas descritas más arriba en Expansión de nombres de camino.
              histappend
                      Si está activa, la lista de historia se añade al fichero nombrado según  el
                      valor   de   la  variable  HISTFILE  cuando  el  shell  acaba,  en  vez  de
                      sobreescribir el fichero.
              histreedit
                      Si está activa, y readline se está utilizando,  se  le  da  al  usuario  la
                      oportunidad de re-editar la sustitución de historia fallida.
              histverify
                      Si  está  activa,  y  readline  se  está  utilizando,  los resultados de la
                      sustitución de historia no se pasan inmediatamente al analizador del shell.
                      En  vez  de  eso,  la  línea  resultante se carga en el búfer de edición de
                      readline, permitiendo así una modificación posterior.
              hostcomplete
                      Si está activa, y readline se está utilizando, bash intentará  terminar  de
                      escribir  un  nombre de computador anfitrión cuando se esté completando una
                      palabra que contenga una @ (vea Terminación bajo  READLINE  arriba).   Esto
                      está activado de forma predeterminada.
              huponexit
                      Si  está  activa, bash enviará una señal SIGHUP a todos los trabajos cuando
                      un shell de entrada interactivo finalice.
              interactive_comments
                      Si está activa, permite a una palabra que  empiece  por  #  hacer  que  esa
                      palabra  y  todos  los caracteres restantes de esa línea no sean tenidos en
                      cuenta en un shell interactivo (vea COMENTARIOS arriba). Esta  opción  está
                      habilitada por omisión.
              lithist Si  está  activa,  y  la opción cmdhist también lo está, las órdenes multi-
                      línea se guardan en la historia con saltos de línea empotrados  en  vez  de
                      emplear como separador el punto y coma, donde sea posible.
              mailwarn
                      Si  está activa, y a un fichero donde bash está buscando correo nuevo se ha
                      accedido desde la última vez que se buscó, se muestra el mensaje ``The mail
                      in  mailfile  has  been read'', o su equivalente en el idioma local, que en
                      español sería ``El correo en buzón ha sido leído''.
              nocaseglob
                      Si está activa,  bash  busca  concordancias  de  nombres  de  ficheros  sin
                      importar  mayúsculas o minúsculas cuando realice la expansión de nombres de
                      caminos (vea Expansión de nombres de caminos arriba).
              nullglob
                      Si está activa, bash permite que los patrones que no concuerden con  ningún
                      fichero  (vea  Expansión  de  nombres  de caminos arriba) se expandan a una
                      cadena vacía, en vez de a sí mismos.
              promptvars
                      Si está activa, las cadenas de caracteres que sirven de  indicadores  están
                      sujetas  a  expansión  de  variable y parámetro tras ser expandidas como se
                      describió  en  INDICADORES  arriba.   Esta  opción  está  activa  de  forma
                      predeterminada.
              shift_verbose
                      Si  está  activa, la orden interna shift muestra un mensaje de error cuando
                      el número de shift excede al de parámetros posicionales.
              sourcepath
                      Si está activa, la orden interna source (.) emplea el valor  de  PATH  para
                      buscar  el  directorio que contenga al fichero suministrado como argumento.
                      Esta opción está activa por omisión.
       suspend [-f]
              Suspende la ejecución de este shell hasta que reciba una señal SIGCONT.  La  opción
              -f  dice  que  no  hay  que  protestar  si éste es un shell de entrada; simplemente
              suspenderlo de todas formas. El estado de retorno es 0 a menos que el shell sea  de
              entrada  y  la  opción  -f  no  se  haya  dado, o si el control de trabajos no está
              habilitado.
       test expr
       [ expr ]
              Devuelve un estado  de  0  ó  1  dependiendo  de  la  evaluación  de  la  expresión
              condicional  expr.   Cada  operador y operando debe ser un argumento separado.  Las
              expresiones se componen de las primarias  descritas  más  arriba  bajo  EXPRESIONES
              CONDICIONALES.

              Las  expresiones se pueden combinar mediante los operadores siguientes, listados en
              orden decreciente de precedencia.
              ! expr Verdad si expr es falsa.
              ( expr )
                     Devuelve el valor de expr.  Esto puede emplearse para cambiar la precedencia
                     normal de los operadores.
              expr1 -a expr2
                     Verdad si tanto expr1 como expr2 son verdad.
              expr1 -o expr2
                     Verdad si uno al menos de expr1 o expr2 es verdad.

              test  y  [ evalúan expresiones condicionales según un conjunto de reglas basadas en
              el número de argumentos.

              0 argumentos
                     La expresión es falsa.
              1 argumento
                     La expresión es verdad si y sólo si el argumento no está vacío.
              2 argumentos
                     Si el primer argumento es !, la expresión es verdad si y sólo si el  segundo
                     argumento  es  nulo.   Si  el  primer  argumento  es  uno  de los operadores
                     condicionales monarios listados  arriba  en  EXPRESIONES  CONDICIONALES,  la
                     expresión es verdad si el test monario es verdad.  Si el primer argumento no
                     es un operador condicional monario válido, la expresión es falsa.
              3 argumentos
                     Si el segundo argumento es uno  de  los  operadores  condicionales  binarios
                     listados  arriba  en EXPRESIONES CONDICIONALES, el resultado de la expresión
                     es el resultado del test binario empleando el  primer  y  tercer  argumentos
                     como  operandos.   Si  el primer argumento es !, el valor es la negación del
                     test de dos argumentos empleando el segundo  y  tercer  argumentos.   Si  el
                     primer argumento es exactamente ( y el tercer argumento es exactamente ), el
                     resultado es el test de un argumento del segundo argumento.  De  otro  modo,
                     la expresión es falsa.  Los operadores -a y -o se consideran como operadores
                     binarios en este caso.
              4 argumentos
                     Si el primer argumento es !, el resultado es la negación de la expresión  de
                     tres  argumentos  compuesta por los argumentos restantes.  De otra forma, la
                     expresión se analiza y evalúa de acuerdo con la precedencia  utilizando  las
                     reglas listadas arriba.
              5 ó más argumentos
                     La  expresión  se  analiza y evalúa de acuerdo con la precedencia usando las
                     reglas mencionadas arriba.

       times  Muestra los tiempos acumulados de usuario y sistema para el shell y  para  procesos
              ejecutados desde él. El estado de retorno es 0.

       trap [-lp] [arg] [nombre-señal ...]
              La  orden  arg  va  a  leerse  y  ejecutarse cuando el shell reciba la(s) señal(es)
              especificada(s) por nombre-señal.  Si arg está ausente o es -,  todas  las  señales
              especificadas  se  reestablecen  a sus valores originales (los que tenían cuando se
              entró en el shell).  Si arg es la cadena vacía,  la  señal  especificada  por  cada
              nombre-señal  no  se  tiene  en  cuenta por parte del shell y de las órdenes que se
              llamen desde él.  Si arg es -p entonces se muestran  las  órdenes  de  las  trampas
              asociadas  con  cada  nombre-señal.   Si no se pasan argumentos o si sólo se da -p,
              trap muestra la lista de órdenes asociadas con cada número de señal.  Cada  nombre-
              señal  es  o bien un nombre de señal de los definidos en <signal.h>, o un número de
              señal.  Si un nombre-señal es EXIT (0), la orden arg se ejecuta cuando se sale  del
              shell.  Si un nombre-señal es DEBUG, la orden arg se ejecuta tras cada orden simple
              (vea GRAMÁTICA DEL SHELL arriba).  La opción -l hace que el shell muestre una lista
              de  nombres  de señal y sus números correspondientes.  Las señales que no se tienen
              en cuenta ya cuando se entra en el shell no pueden ser atrapadas ni  restablecidas.
              Las  señales  atrapadas se reestablecen a sus valores originales en un proceso hijo
              cuando se crea.  El estado de retorno es `falso' si cualquier  nombre-señal  no  es
              válido; de otro modo, trap devuelve `verdad'.

       type [-atp] nombre [nombre ...]
              Sin opciones, indica cómo será interpretado cada nombre si se usa como un nombre de
              orden.  Si se emplea la opción -t, type muestra una de las  siguientes  cadenas  de
              caracteres:  alias, keyword, function, builtin, o file si nombre es respectivamente
              un alias,  una  palabra  reservada  del  shell,  una  función,  una  orden  interna
              incorporada  en  el  shell,  o  un fichero ejecutable de disco.  Si el nombre no se
              encuentra, no se muestra nada, y se devuelve un estado de salida de `falso'.  Si se
              emplea  la  opción  -p,  type devuelve o bien el nombre del fichero de disco que se
              ejecutaría si se especificara nombre como un nombre de orden, o bien nada  si  type
              -t  nombre  no  devolviera  file.   Si una orden está en la tabla de dispersión, -p
              muestra el valor de dicha tabla, no necesariamente el fichero que aparezca  primero
              en PATH.  Si se emplea la opción -a, type muestra todos los sitios que contengan un
              ejecutable llamado nombre.  Esto incluye alias y funciones, si y sólo si la  opción
              -p  no  se  ha usado también.  La tabla de dispersión de las órdenes no se consulta
              cuando se emplea -a.  type devuelve `verdad' si cualquiera  de  los  argumentos  se
              encuentra, `falso' si no se encuentra ninguno.

       ulimit [-SHacdflmnpstuv [límite]]
              Proporciona  control  sobre  los  recursos  disponibles  para  el  shell y para los
              procesos arrancados por él,  en  sistemas  que  permitan  tal  control  (Linux  por
              ejemplo,  y  por  supuesto).  El  valor  de límite puede ser un número en la unidad
              especificada para el recurso, o el valor unlimited, o sea, ilimitado.  Las opciones
              -H  y  -S especifican que el límite para el recurso dado va a ser duro o blando. Un
              límite duro es aquél que no puede ser aumentado una vez puesto;  un  límite  blando
              puede incrementarse hasta el valor dado por el límite duro. Si no se especifican ni
              -H ni -S, se establecen ambos límites.  Si límite se omite, se muestran los valores
              del límite blando del recurso, a menos que se dé la opción -H. Cuando se especifica
              más de un recurso, se imprime el nombre del límite y la  unidad  antes  del  valor.
              Otras opciones se interpretan como sigue:
              -a     Se informa de todos los límites actuales
              -c     El tamaño máximo de ficheros de volcados de memoria (core)
              -d     El tamaño máximo del segmento de datos de un proceso
              -f     El tamaño máximo de ficheros creados por el shell
              -l     El tamaño máximo que puede ser bloqueado en memoria
              -m     El tamaño del máximo conjunto residente (memoria)
              -n     EL  número  máximo  de  descriptores  de  ficheros  abiertos  (la mayoría de
                     sistemas no permiten establecer este valor)
              -p     El tamaño de  una  tubería  en  bloques  de  512  B  (esto  puede  no  estar
                     establecido)
              -s     El tamaño máximo de pila
              -t     La máxima cantidad de tiempo de CPU en segundos
              -u     El número máximo de procesos disponibles para un solo usuario
              -v     La máxima cantidad de memoria virtual disponible para el shell

              Si  se  da límite, es el nuevo valor del recurso especificado (la opción -a es sólo
              para mostrar los valores).  Si no se da ninguna opción, entonces se supone -f.  Los
              valores  están en incrementos de 1024 B, excepto para -t, que está en segundos, -p,
              que  está  en  unidades  de  bloques  de  512  B,  y  -n  y  -u,  que  son  valores
              adimensionales.  El  estado  de  retorno  es  0 a menos que se encuentre una opción
              inválida, se dé como límite un argumento no numérico distinto de unlimited, o  bien
              ocurra un error mientras se establece un nuevo límite.

       umask [-p] [-S] [modo]
              La  máscara  de  creación  de  ficheros  del  usuario se establece a modo.  Si modo
              empieza con un dígito, se interpreta como un número octal;  si  no,  se  interpreta
              como un modo simbólico similar al aceptado por chmod(1).  Si modo se omite, o si se
              da la opción -S, se muestra el valor actual de la máscara.  La opción -S  hace  que
              la  máscara  se  imprima  en  forma  simbólica; la salida predeterminada es como un
              número octal.  Si se da la opción -p y modo se omite, la salida es de tal forma que
              puede  reutilizarse  como  entrada.  El estado de retorno es 0 si el modo se cambió
              exitosamente o si no se dio el argumento modo, y `falso' en otra circunstancia.

       unalias [-a] [nombre ...]
              Quita nombres de la lista de alias definidos. Si se da  la  opción  -a,  se  quitan
              todas  las  definiciones  de  alias. El estado de salida es `verdad' a menos que un
              nombre dado no sea un alias definido.

       unset [-fv] [nombre ...]
              Para cada nombre, borra la variable  o  función  correspondiente.   Si  no  se  dan
              opciones,  o  se  da la opción -v, cada nombre se refiere a una variable del shell.
              Las variables de lectura exclusiva no pueden borrarse.  Si se especifica  -f,  cada
              nombre  se refiere a una función del shell, y se borra la definición de la función.
              Cada variable o función se quita del entorno pasado a órdenes subsiguientes.  Si se
              quita  cualquiera  de  RANDOM,  SECONDS,  LINENO,  HISTCMD,  o  DIRSTACK, pierde su
              propiedad especial, incluso aunque más adelante se vuelva a definir. El  estado  de
              salida es `verdad' a menos que nombre no exista o sea de lectura exclusiva.

       wait [n]
              Espera al proceso especificado y devuelve su estado de terminación.  n puede ser un
              identificador de proceso (PID) o una especificación de trabajo; si se da una espec.
              de trabajo, se espera a todos los procesos en la tubería de ese trabajo. Si n no se
              da, se espera a todos los procesos  hijos  activos  actualmente,  y  el  estado  de
              retorno  es  cero.  Si n especifica un proceso o trabajo no existente, el estado de
              retorno es 127. De otro modo, el estado de retorno  es  el  estado  de  salida  del
              último proceso o trabajo al que se esperó.

SHELL RESTRINGIDA

       Si  bash  se  arranca con el nombre rbash, o se da la opción -r en la llamada, el shell se
       convierte en restringido.  Un shell restringido se emplea para establecer un ambiente  más
       controlado que el que el shell estándar proporciona.  Se comporta de forma idéntica a bash
       con la excepción de que lo siguiente no está permitido o no se realiza:

       •      cambiar de directorio con cd

       •      establecer o anular los valores de SHELL o de PATH

       •      especificar nombres de órdenes que contengan /

       •      especificar un nombre de fichero que contenga al menos una / como un  argumento  de
              la orden interna .  (source)

       •      importar definiciones de funciones desde el entorno del shell en el arranque

       •      analizar el valor de SHELLOPTS desde el entorno del shell en el arranque

       •      redirigir la salida usando los operadores de redirección >, >|, <>, >&, &>, y >>

       •      utilizar la orden interna exec para reemplazar el shell por otro programa

       •      añadir o eliminar órdenes incorporadas con las opciones -f o -d de la orden interna
              enable.

       •      dar la opción -p a la orden interna command.

       •      desactivar el modo restringido con set +r o set +o restricted.

       Estas restricciones entran en vigor después de que se lean los ficheros  de  arranque  que
       hubiera.

       Cuando  se  ejecuta una orden que resulta ser un guión del shell (vea EJECUCIÓN DE ÓRDENES
       arriba), rbash desactiva todas las restricciones en el  shell  lanzado  para  ejecutar  el
       guión.

VÉASE TAMBIÉN

       Bash Features (Características de Bash), Brian Fox & Chet Ramey
       The Gnu Readline Library (La Biblioteca Readline de GNU), Brian Fox & Chet Ramey
       The Gnu History Library (La Biblioteca de Historia de GNU), Brian Fox & Chet Ramey
       Portable  Operating  System  Interface  (POSIX) Part 2: Shell and Utilities (Interfaz para
       Sistemas Operativos Transportables (POSIX) Parte 2: Shell y Utilidades), IEEE
       zsh(1), ash(1), sh(1), ksh(1), csh(1), tcsh(1).
       emacs(1), vi(1)
       readline(3)

FICHEROS

       /bin/bash
              La imagen ejecutable de bash
       /etc/profile
              El fichero de inicio general, leído en shells de entrada
       ~/.bash_profile
              El fichero de inicio personal, leído para shells de entrada
       ~/.bashrc
              El fichero individual de arranque para shells interactivos
       ~/.inputrc
              El fichero de inicio individual de readline

AUTORES

       Brian Fox, Free Software Foundation
       bfox@gnu.ai.MIT.Edu

       Chet Ramey, Case Western Reserve University
       chet@ins.CWRU.Edu

       Traducción al español: Gerardo Aburruzaga García, para el proyecto PAMELI.
       Gerardo@CICA.es

INFORMES DE FALLOS

       Si Ud. encuentra un fallo  en  bash,  debería  informar  de  ello.  Pero  primero  debería
       asegurarse de que realmente es un fallo, y de que aparece en la última versión de bash que
       tenga.

       Una vez que Ud. ha determinado que realmente existe un fallo,  utilice  la  orden  bashbug
       para  enviar  el  informe  correspondiente.   Si Ud. ha encontrado cómo corregirlo, ¡se le
       anima a que nos mande también la corrección!  Las sugerencias y  los  informes  de  fallos
       `filosóficos'  se  pueden  enviar  por  correo  electrónico a bug-bash@gnu.org o se pueden
       publicar en el grupo de discusiones de Usenet gnu.bash.bug.

       TODOS los informes de fallos deben incluir:

       El número de versión de bash
       El tipo de computador (hardware) y el sistema operativo
       El compilador que se empleó para compilarlo
       Una descripción del comportamiento del fallo
       Un corto guión o `receta' para reproducir el fallo

       bashbug inserta automáticamente los tres primeros puntos en la plantilla  que  proporciona
       para escribir el informe del fallo.

       Los  comentarios  e  informes  de  fallos  que  conciernan  a  esta página de manual deben
       dirigirse a chet@ins.CWRU.Edu.

       Los relativos a  la  traducción  de  esta  página  deben  dirigirse  a  gerardo@cica.es  o
       discutirse    en    el   marco   del   proyecto   PAMELI;   contacte   con   nosotros   en
       http://elcano.dif.um.es/~piernas/manpages-es.

FALLOS

       Es demasiado grande y demasiado lento.

       Hay algunas sutiles diferencias entre bash y versiones tradicionales del shell  de  Bourne
       sh, mayormente debidas a la especificación POSIX.

       Los alias son confusos en algunos casos.

       Las órdenes internas del shell y las funciones no son interrumpibles/rearrancables.

       Las  órdenes  compuestas y las secuencias de órdenes de la forma `a ; b ; c' no se manejan
       de forma muy elegante cuando se intenta suspender el proceso. Cuando un proceso es parado,
       el shell ejecuta inmediatamente la siguiente orden de la secuencia.  Para remediar esto es
       suficiente poner la secuencia de órdenes entre paréntesis; así la forzamos a ejecutarse en
       un subshell, que puede pararse como una unidad.

       Las  órdenes dentro de una sustitución de orden de tipo $(...) no se analizan hasta que se
       intenta la sustitución. Esto provocará un retraso en la aparición de mensajes posibles  de
       error hasta algún tiempo después de que se introduzca la orden.

       Las variables de tipo vector no pueden (aún) exportarse.