Provided by: manpages-es-extra_0.8a-14ubuntu1_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 tubera 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.

       ((expresin))
              La expresin 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 "expresin".

       [[ expresin ]]
              Devuelve un estado de 0 ó 1 dependiendo de la evaluación  de  la
              expresión condicional expresin.  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:

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

       Los operadores && y || no ejecutan expresin2 si el valor de expresin1
       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 [ ( patrn [ | patrn ] ... ) lista ;; ] ... esac
              Una orden  case  expande  primero  palabra,  e  intenta  hacerla
              concordar  contra  cada  patrn 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 carcter de escape, comillas simples, y
       comillas dobles.

       Una barra inclinada inversa no entrecomillada (\)  es  el  carcter  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 parmetro 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 parmetro 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
                                      distribucin).
              BASH_VERSINFO[1]        El número menor de versión (la versin).
              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-compaa-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 precisin, 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  carcter  de  expansin  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  sustitucin  rpida,  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: expansin de
       llaves,  expansin  de  tilde,  expansin  de  parmetro  y   variable,
       sustitucin  de  orden,  expansin  aritmtica,  divisin  de palabras,
       expansin 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: sustitucin 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 expansin de llaves es un mecanismo por  el  cual  pueden  generarse
       cadenas arbitrarias. Este mecanismo es similar a la expansin 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 prembulo 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.

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

       Si   el  primer  carácter  de  parmetro  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 parmetro
       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 parmetro.  Esto se conoce como expansin 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.

       ${parmetro:-palabra}
              Emplear  valores predeterminados.  Si parmetro no está definido
              o está vacío, se sustituye la expansión  de  palabra.   De  otro
              modo, se sustituye el valor de parmetro.
       ${parmetro:=palabra}
              Asignar  valores predeterminados.  Si parmetro no está definido
              o es nulo, la  expansión  de  palabra  se  asigna  a  parmetro.
              Luego,  el  valor de parmetro se sustituye. No se puede asignar
              nada de esta manera a  los  parámetros  posicionales  ni  a  los
              especiales.
       ${parmetro:?palabra}
              Muestra un error si no está definido o está vacío.  Si parmetro
              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 parmetro.
       ${parmetro:+palabra}
              Emplear un valor alternativo.  Si parmetro está vacío o no está
              definido, no se sustituye nada; de otro modo,  se  sustituye  la
              expansión de palabra.
       ${parmetro:desplazamiento}
       ${parmetro:desplazamiento:longitud}
              Expansión  de  subcadena.   Expande hasta longitud caracteres de
              parmetro,  empezando  en  los  caracteres   especificados   por
              desplazamiento.   Si  se  omite  la  longitud,  se  expande a la
              subcadena de parmetro, 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
              parmetro.   Si  parmetro  es  @,  el  resultado  es   longitud
              parámetros   posicionales   empezando   en  desplazamiento.   Si
              parmetro es un  nombre  de  vector  indexado  por  @  o  *,  el
              resultado   es   longitud  miembros  del  vector  empezando  con
              ${parmetro[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.

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

       ${parmetro#palabra}
       ${parmetro##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 parmetro, entonces el  resultado  de  la
              expansión  es  el valor expandido de parmetro 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 parmetro 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 parmetro 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.

       ${parmetro%palabra}
       ${parmetro%%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 parmetro, entonces  el
              resultado de la expansión es el valor expandido de parmetro con
              el patrón más corto que concuerde (el caso ‘‘%’’) o el más largo
              (el  caso  ‘‘%%’’) borrado.  Si parmetro 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 parmetro 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.

       ${parmetro/patrn/cadena}
       ${parmetro//patrn/cadena}
              El patrn se expande para producir un patrón justo  como  en  la
              expansión  de  nombre  de  camino.   parmetro  se  expande y la
              concordancia más larga de patrn 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  patrn  se  reemplacen con cadena.  Si patrn empieza por #,
              debe concordar con el principio de la cadena.  Si patrn empieza
              por %, debe concordar con el final de la cadena.  Si cadena está
              vacía, las concordancias de patrn se borran y el / que sigue al
              patrn  puede  omitirse.  Si parmetro 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  parmetro 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 sustitucin de orden permite a la salida de una orden reemplazar  al
       nombre de la orden. Hay dos formas:

              $(orden)
       u
              ‘ordenBash   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:

              $((expresin))

       La expresin 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 expresin no  es  válida,  bash  imprime  un
       mensaje indicando el fallo y no ocurre ninguna sustitución.

   Sustitución de proceso
       La  sustitucin  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  sustitucin  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 divisin 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
       parmetros 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
       patrn, 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  patrn.   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  [.smbolo.]  concuerda  con  el
              símbolo de clasificación smbolo.

       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-patrn  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-patrn)
                     Concuerda  con  ninguna  o una ocurrencia de los patrones
                     dados
              *(lista-patrn)
                     Concuerda con ninguna o más ocurrencias de  los  patrones
                     dados
              +(lista-patrn)
                     Concuerda con una o más ocurrencias de los patrones dados
              @(lista-patrn)
                     Concuerda exactamente con uno de los patrones dados
              !(lista-patrn)
                     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-opcin
              Verdad  si la opción del shell nombre-opcin 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
       guin 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 ejecucin, 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  exportacin
       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 suspensin
       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-funcin 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-funcin  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
                     aplicacin,   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-lnea 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 regin.
       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 funcin] [-u funcin] [-r sectecl]
       bind [-m mapatecl] -f nombre-fichero
       bind [-m mapatecl] sectecl:nombre-funcin
              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 funcin
                     Pregunta qué teclas llaman a la funcin especificada.
              -u funcin
                     Desenlaza  todas  las  teclas  asociadas  a  la   funcin
                     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 [patrn]
              Muestra  información  de ayuda sobre las órdenes internas. Si se
              especifica patrn, help  da  ayuda  detallada  sobre  todas  las
              órdenes  que concuerden con patrn; 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 patrn.

       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-seal | -n numseal | -nombre-seal] [pid | espectrab]
       ...
       kill -l [nombre-seal | status_salida]
              Envía  la  señal  especificada por nombre-seal o numseal a los
              procesos nombrados por pid o espectrab.  nombre-seal es o  bien
              un  nombre  de señal como SIGKILL o un número de señal; numseal
              es un número de señal. Si nombre-seal es un  nombre  de  señal,
              éste  puede  darse con o sin el prefijo SIG.  Si nombre-seal 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 opcin] [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-opcin
                      El nombre-opcin 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-opcin, se muestran los
                      valores de las opciones activas.  Si se da +o sin ningún
                      nombre-opcin,  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 buzn 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-seal ...]
              La  orden  arg  va  a leerse y ejecutarse cuando el shell reciba
              la(s) señal(es) especificada(s) por nombre-seal.  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-seal 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-
              seal.   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-seal es o bien un nombre de señal de los definidos
              en <signal.h>, o un número de señal.  Si un nombre-seal es EXIT
              (0),  la  orden  arg  se ejecuta cuando se sale del shell. Si un
              nombre-seal 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-seal 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 [lmite]]
              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
              lmite 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 lmite 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 lmite, 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 lmite 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.