9.2. Bash (Bourne-Again Shell)
- Ahora bash-4.0 y versiones posteriores permiten pasar construcciones de sustitución de procesos sin cambios a través de cualquier expansión de llaves, por lo que cualquier ampliación del contenido deberá especificarse independientemente, y cada sustitución de procesos se deberá ingresar por separado.
- Bash-4.0 y posteriores, permiten que SIGCHLD interrumpa la incorporación de espera, como especifica Posix, por lo tanto la trampa SIGCHLD ya no siempre se invoca una vez por hijo mediante `wait' para esperar a todos los hijos.
- Como Bash-4.0 y posteriores ahora siguen las reglas de Posix para hallar el delimitador de cerramiento de una sustitución de comando $(), no se comportará como las versiones anteriores, sino que capturará más sintaxis y errores de lectura antes de generar una subshell para evaluar la sustitución de comandos.
- El código de finalización programable utiliza el mismo set de caracteres delimitantes que readline para dividir la línea de comandos en palabras, en lugar del set de metacaracteres de shell, por lo tanto, la finalización programable y readline deberían ser más consistentes.
- Cuando se agota el tiempo de lectura incorporada, intentará asignar cualquier entrada de lectura a variables específicadas, lo cual también hace que las variables se establezcan para la cadena vacía si no hay suficiente entrada.
- En Bash-4.0 y posteriores, cuando uno de los comandos en una tubería es asesinado por un SIGINT mientras ejecuta la lista de comandos, el shell actúa como si hubiera recibido la interrupción.
- Bash-4.0 y versiones posteriores cambian el manejo de la opción
set -e
para que el shell salga si una tubería falla (y no sólo si el último comando en la tubería que está fallando es un comando simple). Esto no es como especifica Posix. Hay un trabajo en curso para actualizar esta porción del estándar, la conducta de Bash-4.0 intenta capturar el consenso en el momento del lanzamiento. - Bash-4.0 y posteriores corrigen un error en modo Posix que hacía que
. (source)
integrado buscara el directorio actual por el argumento de nombre de archivos, incluso si"."
no estaba en la RUTA del sistema. Posix dice que el shell no debe buscar en la variable PWD en este caso. - Bash-4.1 utiliza la configuración regional actual al comparar cadenas mediante operadores para el comando
[[
. Así revertir la conducta anterior al establecer una de las opcionescompatNN
shopt.
Además de los puntos ya mencionados, citar el argumento de patrón para el operador condicional de coincidencia de expresión regular =~ puede hacer que la coincidencia de regexp deje de funcionar. Esto ocurre en todas las arquitecturas. En versiones de bash anteriores a 3.2, el efecto de citar el argumento de expresión regular para el operador =~ del comando[[ no se especificaba. El efecto práctico era que poner entre comillas dobles las barras invertidas requeridas del argumento de patrón para citar caracteres de patrones especiales que interfirían con el procesamiento de barras invertidas realizado por la expansión de palabras entre comillas dobles, era incompatible con la forma en la que el operador de coincidencia de patrones de shell == trataba los caracteres entre comillas.