Bash es un lenguaje de comandos y shell de Unix escrito por Brian Fox para el Proyecto GNU como un reemplazo de software libre para el shell de Bourne . [11] [12] Lanzado por primera vez en 1989, [13] se ha utilizado como el shell de inicio de sesión predeterminado para la mayoría de las distribuciones de Linux . [14] También está disponible una versión para Windows 10 a través del Subsistema de Windows para Linux . [15] También es el shell de usuario predeterminado en Solaris 11. [16]Bash también era el shell predeterminado en todas las versiones de Apple macOS antes de la versión 2019 de macOS Catalina , que cambió el shell predeterminado a zsh , aunque Bash actualmente permanece disponible como un shell alternativo. [17]
Autor (es) original (es) | Brian Fox |
---|---|
Versión inicial | 8 de junio de 1989 |
Lanzamiento estable | 5.1 (7 de diciembre de 2020 [±] [1] [2] | )
Repositorio | |
Escrito en | C |
Sistema operativo |
|
Plataforma | ÑU |
Disponible en | Multilingüe ( gettext ) |
Tipo | Shell de Unix , lenguaje de comandos |
Licencia | Desde 4.0: GPL-3.0-or-later [6] 1.11? a 3.2: GPL-2.0-o-posterior [7] 0.99? a 1.05 ?: GPL-1.0-o-posterior [8] [9] [10] |
Sitio web | www .gnu .org / software / bash / |
Bash es un procesador de comandos que normalmente se ejecuta en una ventana de texto donde el usuario escribe comandos que provocan acciones. Bash también puede leer y ejecutar comandos desde un archivo, llamado script de shell . Como la mayoría de los shells de Unix, admite el agrupamiento de nombres de archivo (coincidencia de comodines), canalización , aquí documentos , sustitución de comandos , variables y estructuras de control para pruebas de condición e iteración . Las palabras clave , la sintaxis , las variables de ámbito dinámico y otras características básicas del lenguaje se copian de sh . Otras características, por ejemplo, el historial , se copian de csh y ksh . Bash es un shell compatible con POSIX , pero con varias extensiones.
El nombre del shell es un acrónimo de Bourne Again Shell , un juego de palabras con el nombre del shell Bourne al que reemplaza [18] y la noción de " nacer de nuevo ". [19] [20]
Un agujero de seguridad en Bash que data de la versión 1.03 (agosto de 1989), [21] apodado Shellshock , fue descubierto a principios de septiembre de 2014 y rápidamente condujo a una variedad de ataques en Internet . [22] [23] [24] Los parches para corregir los errores se pusieron a disposición poco después de que se identificaran los errores.
Historia
Brian Fox comenzó a codificar Bash el 10 de enero de 1988, [25] después de que Richard Stallman se sintiera insatisfecho con la falta de progreso de un desarrollador anterior. [11] Stallman y la Free Software Foundation (FSF) consideraron un shell libre que podría ejecutar scripts de shell existentes tan estratégicos para un sistema completamente libre construido a partir de código BSD y GNU que este fue uno de los pocos proyectos que ellos mismos financiaron, con Fox emprendiendo el trabajo como empleado de la FSF. [11] [26] Fox lanzó Bash como beta, versión .99, el 8 de junio de 1989, [13] y siguió siendo el principal encargado de mantenimiento hasta algún momento entre mediados de 1992 [27] y mediados de 1994, [28] cuando fue despedido de la FSF [29] y su responsabilidad fue transferida a otro colaborador temprano, Chet Ramey. [30] [31] [32]
Desde entonces, Bash se ha convertido, con mucho, en el shell más popular entre los usuarios de Linux, convirtiéndose en el shell interactivo predeterminado en las diversas distribuciones de ese sistema operativo [33] [34] (aunque el shell Almquist puede ser el shell de scripting predeterminado) y en las versiones de macOS de Apple antes de Catalina en octubre de 2019. [35] [36] [14] Bash también ha sido portado a Microsoft Windows y distribuido con Cygwin y MinGW , a DOS por el proyecto DJGPP , a Novell NetWare , a OpenVMS por el proyecto GNV, [37 ] a ArcaOS , [38] ya Android a través de varias aplicaciones de emulación de terminal.
En septiembre de 2014, Stéphane Chazelas, un especialista en Unix / Linux, [39] descubrió un error de seguridad en el programa. El error, que se reveló por primera vez el 24 de septiembre, se llamó Shellshock y se le asignaron los números CVE - 2014-6271 , CVE- 2014-6277 y CVE- 2014-7169 . El error se consideró grave, ya que los scripts CGI que usan Bash podrían ser vulnerables, lo que permitiría la ejecución de código arbitrario . El error estaba relacionado con la forma en que Bash pasa definiciones de funciones a subcapas a través de variables de entorno . [40]
Características
La sintaxis del comando Bash es un superconjunto de la sintaxis del comando del shell Bourne. Bash soporta expansión de llaves , finalización de línea de comando (Finalización programable), [41] depuración básica [42] y manejo de señales (uso trap
) desde bash 2.05a [43] entre otras características. Bash puede ejecutar la gran mayoría de los scripts de shell de Bourne sin modificación, con la excepción de los scripts de shell de Bourne que tropiezan con un comportamiento de sintaxis marginal interpretado de manera diferente en Bash o que intentan ejecutar un comando del sistema que coincida con un Bash incorporado más nuevo, etc. La sintaxis del comando Bash incluye ideas dibujadas del KornShell (ksh) y el C shell (CSH) como la edición de línea de comandos, historial de comandos ( history
comandos), [44] la pila de directorios, los $RANDOM
y $PPID
las variables, y POSIX sustitución de orden sintaxis $(…)
.
Cuando un usuario presiona la tecla de tabulación dentro de un shell de comandos interactivo, Bash utiliza automáticamente la finalización de la línea de comandos , desde la versión beta 2.04, [45] para hacer coincidir los nombres de programas, nombres de archivos y nombres de variables parcialmente escritos. El sistema de finalización de línea de comandos de Bash es muy flexible y personalizable, y a menudo está empaquetado con funciones que completan argumentos y nombres de archivos para programas y tareas específicos.
La sintaxis de Bash tiene muchas extensiones que faltan en el shell Bourne. Bash puede realizar cálculos de números enteros ("evaluación aritmética") sin generar procesos externos. Utiliza el ((…))
comando y la $((…))
sintaxis de la variable para este propósito. Su sintaxis simplifica E / S redirección . Por ejemplo, puede redirigir la salida estándar (stdout) y el error estándar (stderr) al mismo tiempo usando el &>
operador. Esto es más simple de escribir que el equivalente de shell de Bourne ' command > file 2>&1
'. Bash admite la sustitución de procesos mediante la sintaxis <(command)
y >(command)
, que sustituye la salida de (o la entrada a) un comando donde normalmente se usa un nombre de archivo. (Esto se implementa a través de / proc / fd / canalizaciones sin nombre en sistemas que lo admiten, o mediante canalizaciones temporales con nombre cuando sea necesario).
Cuando se usa la palabra clave 'función', las declaraciones de función Bash no son compatibles con los scripts Bourne / Korn / POSIX (KornShell tiene el mismo problema cuando se usa 'función'), pero Bash acepta la misma sintaxis de declaración de función que los shells Bourne y Korn y cumple con POSIX. Debido a estas y otras diferencias, los scripts de shell de Bash rara vez se pueden ejecutar bajo los intérpretes de shell de Bourne o Korn a menos que se escriban deliberadamente teniendo en cuenta esa compatibilidad, que se está volviendo menos común a medida que Linux se generaliza. Pero en el modo POSIX, Bash se ajusta más a POSIX. [46]
Bash admite aquí documentos . Desde la versión 2.05b, Bash puede redirigir la entrada estándar (stdin) desde una "cadena aquí" usando el <<<
operador.
Bash 3.0 admite la coincidencia de expresiones regulares en proceso utilizando una sintaxis que recuerda a Perl . [47]
En febrero de 2009, [48] Bash 4.0 introdujo soporte para matrices asociativas . [9] Los índices de arreglos asociativos son cadenas, de manera similar a AWK o Tcl . [49] Se pueden utilizar para emular matrices multidimensionales. Bash 4 también cambia su licencia a GPL-3.0-o posterior ; algunos usuarios sospechan que este cambio de licencia es la razón por la que MacOS sigue usando versiones anteriores. [50] Apple finalmente dejó de usar Bash en sus sistemas operativos con el lanzamiento de MacOS Catalina en 2019. [17]
Expansión de corsé
La expansión de llaves, también llamado alternancia, es una característica de copiado de la shell C . Genera un conjunto de combinaciones alternativas. No es necesario que los resultados generados existan como archivos. Los resultados de cada cadena expandida no se ordenan y se conserva el orden de izquierda a derecha:
$ echo a { p, c, d, b } e ape ace ade abe $ echo { a, b, c } { d, e, f } ad ae af bd be bf cd ce cf
Los usuarios no deben usar expansiones de llaves en scripts de shell portátiles, porque el shell Bourne no produce el mismo resultado.
$ # Un shell tradicional no produce la misma salida $ / bin / sh -c 'echo a {p, c, d, b} e' a {p, c, d, b} e
Cuando la expansión de llaves se combina con comodines, las llaves se expanden primero y luego los comodines resultantes se sustituyen normalmente. Por lo tanto, se puede obtener una lista de imágenes JPEG y PNG en el directorio actual usando:
ls *. { jpg, jpeg, png } # se expande a * .jpg * .jpeg * .png - después de lo cual, # se procesan los comodines echo *. { png, jp { e, } g } # echo solo muestra las expansiones - # y llaves entre llaves son posibles.
Además de la alternancia, la expansión de llaves se puede utilizar para rangos secuenciales entre dos números enteros o caracteres separados por puntos dobles. Las versiones más nuevas de Bash permiten un tercer número entero para especificar el incremento.
$ echo { 1 ..10 } 1 2 3 4 5 6 7 8 9 10 $ echo archivo { 1 ..4 } .txt archivo1.txt archivo2.txt archivo3.txt archivo4.txt $ echo { a..e } abcde $ echo { 1 ..10..3 } 1 4 7 10 $ echo { a..j..3 } adgj
Cuando la expansión de la riostra se combina con la expansión variable, la expansión variable se realiza después de la expansión de la riostra, que en algunos casos puede requerir el uso de la eval
incorporada, por lo tanto:
$ inicio = 1 ; end = 10 $ echo { $ start .. $ end } # no se expande debido al orden de evaluación {1..10} $ eval echo { $ start .. $ end } # se produce la expansión de la variable y luego se evalúa la cadena resultante 1 2 3 4 5 6 7 8 9 10
Scripts de inicio
Cuando se inicia Bash, ejecuta los comandos en una variedad de archivos dot . A diferencia de los scripts de shell de Bash, los archivos dot normalmente no tienen habilitado el permiso de ejecución ni una directiva de intérprete como #!/bin/bash
.
Ejemplo de inicio de Bash compatible con versiones anteriores
El esqueleto a ~/.bash_profile
continuación es compatible con el shell de Bourne y proporciona una semántica similar a csh para ~/.bashrc
y ~/.bash_login
. El es una evaluación de corto-circuito que comprueba si el nombre de archivo existe y es legible, omitiendo la parte después de que el caso no lo es.[ -r filename ] && cmd
&&
[ -r ~ / .profile ] && . ~ / .profile # configura el entorno, una vez, sintaxis Bourne-sh solo si [ -n " $ PS1 " ] ; entonces # ¿somos interactivos? [ -r ~ / .bashrc ] && . ~ / .bashrc # tty / prompt / función de configuración para shells interactivos [ -r ~ / .bash_login ] && . ~ / .bash_login # cualquier tarea al iniciar sesión solo para el shell de inicio de sesión fi # Fin del bloque "if"
Problemas del sistema operativo en el inicio de Bash
Algunas versiones de Unix y Linux contienen scripts de inicio del sistema Bash, generalmente bajo los /etc
directorios. Bash los llama como parte de su inicialización estándar, pero otros archivos de inicio pueden leerlos en un orden diferente al de la secuencia de inicio documentada de Bash. El contenido predeterminado de los archivos del usuario raíz también puede tener problemas, así como los archivos de esqueleto que el sistema proporciona a las nuevas cuentas de usuario al configurarlo. Los scripts de inicio que inician el sistema de ventanas X también pueden hacer cosas sorprendentes con los scripts de inicio de Bash del usuario en un intento de configurar las variables del entorno del usuario antes de iniciar el administrador de ventanas . Estos problemas a menudo se pueden abordar usando un archivo ~/.xsession
o ~/.xprofile
para leer el ~/.profile
, que proporciona las variables de entorno que necesitan las ventanas de shell de Bash generadas por el administrador de ventanas, como xterm o Gnome Terminal .
Portabilidad
Invocar a Bash con la --posix
opción o indicarlo set -o posix
en un script hace que Bash se ajuste muy de cerca al estándar POSIX 1003.2 . [51] Los scripts de shell Bash destinados a la portabilidad deben tener en cuenta al menos el estándar de shell POSIX. Algunas funciones de bash que no se encuentran en POSIX son: [51] [52]
- Ciertas opciones de invocación extendida
- Expansión de corsé
- Matrices y matrices asociativas
- La
[[ ... ]]
construcción de prueba extendida de doble corchete y su coincidencia de expresiones regulares - La construcción de evaluación aritmética de doble paréntesis (solo
(( ... ))
;$(( ... ))
es POSIX) - Ciertas operaciones de manipulación de cadenas en la expansión de parámetros
local
para variables de ámbito- Sustitución de procesos
- Incorporaciones específicas de Bash
- Coprocesos
- Variables $ EPOCHSECONDS y $ EPOCHREALTIME [53]
Si un fragmento de código utiliza una característica de este tipo, se denomina "bashismo", un problema para el uso portátil. Se pueden usar Debian checkbashisms
y Vidar Holen shellcheck
para asegurarse de que un script no contenga estas partes. [54] [55] La lista varía dependiendo de la cáscara objetivo real: la política de Debian permite algunas extensiones en sus secuencias de comandos (como lo son en dash), [52] mientras que una secuencia de comandos con la intención de soporte pre-POSIX shells Bourne, como autoconf 's configure
, son aún más limitadas en las funciones que pueden utilizar. [56]
Atajos de teclado
Bash usa readline para proporcionar atajos de teclado para la edición de la línea de comandos usando las combinaciones de teclas predeterminadas ( Emacs ). Los enlaces Vi se pueden habilitar ejecutando set -o vi
. [57]
Gestión de proceso
El shell Bash tiene dos modos de ejecución de comandos: modo por lotes y modo concurrente.
Para ejecutar comandos por lotes (es decir, en secuencia) deben estar separados por el carácter ";", o en líneas separadas:
comando1 ; comando2
en este ejemplo, cuando el comando 1 finaliza, el comando 2 se ejecuta.
Una ejecución en segundo plano del comando1 puede ocurrir usando (símbolo &) al final de un comando de ejecución, y el proceso se ejecutará en segundo plano devolviendo inmediatamente el control al shell y permitiendo la ejecución continua de los comandos.
command1 y
O para tener una ejecución concurrente de dos command1 y command2, deben ejecutarse en el shell Bash de la siguiente manera:
comando1 y comando2
En este caso, command1 se ejecuta en segundo plano y símbolo, devolviendo inmediatamente el control al shell que ejecuta command2 en primer plano.
Se puede detener un proceso y devolver el control a bash escribiendo Ctrl+ zmientras el proceso se está ejecutando en primer plano. [58]
Se puede obtener una lista de todos los procesos, tanto en segundo plano como detenidos, ejecutando jobs
:
$ trabajos [1]: comando 1 en ejecución y [2] + comando 2 detenido
En la salida, el número entre paréntesis se refiere a la identificación del trabajo. El signo más significa el proceso predeterminado para bg
y fg
. El texto "En ejecución" y "Detenido" se refieren al estado del proceso . La última cadena es el comando que inició el proceso.
El estado de un proceso se puede cambiar mediante varios comandos. El fg
comando trae un proceso al primer plano, mientras que bg
establece un proceso detenido que se ejecuta en segundo plano. bg
y fg
puede tomar una identificación de trabajo como su primer argumento, para especificar el proceso sobre el que actuar. Sin uno, utilizan el proceso predeterminado, identificado por un signo más en la salida de jobs
. El kill
comando se puede utilizar para finalizar un proceso antes de tiempo, enviándole una señal . La identificación del trabajo debe especificarse después de un signo de porcentaje:
matar % 1
Ejecución condicional
Bash proporciona separadores de comandos de "ejecución condicional" que hacen que la ejecución de un comando dependa del código de salida establecido por un comando precedente. Por ejemplo:
cd " $ EN ALGÚN LUGAR " && ./do_something || echo "Ocurrió un error" > & 2
Donde ./do_something solo se ejecuta si el comando cd (cambiar directorio) fue "exitoso" (devolvió un estado de salida de cero) y el comando echo solo se ejecutaría si el comando cd o ./do_something devuelve un "error" (estado de salida distinto de cero).
Para todos los comandos, el estado de salida se almacena en la variable especial $?
. Bash también admite y forma de evaluación de comando condicional.if ...;then ...;else ...;fi
case $VARIABLE in $pattern)...;;$other_pattern)...;; esac
Informe de errores
Un comando externo llamado bashbug informa de errores del shell de Bash. Cuando se invoca el comando, aparece el editor predeterminado del usuario con un formulario para completar. El formulario se envía por correo a los mantenedores de Bash (u opcionalmente a otras direcciones de correo electrónico). [59] [60]
Terminación programable
La finalización programable mediante Bash complete
y los compgen
comandos [61] han estado disponibles desde la versión beta de 2.04 [62] en 2000. [63] Estas funciones permiten una finalización inteligente compleja, como ofrecer opciones de programa disponibles para completar con tabuladores y luego, después de que el usuario selecciona una opción que requiere un nombre de archivo como su siguiente entrada, solo autocompletar rutas de archivo (y no otras opciones) para el siguiente token.
Historial de versiones
Versión | Fecha de lanzamiento | Notas de lanzamiento |
---|---|---|
bash-5.1 | 2020-12-07 | Historial de versiones de github NOTICIAS [9] |
bash-5.0 | 2019-01-07 | [64] [65] [66] |
bash-5.0-rc1 | 2018-12-20 | |
bash-5.0-beta2 | 2018-11-28 | |
bash-5.0-beta | 2018-09-17 | |
bash-5.0-alpha | 2018-05-22 | |
bash-4.4 | 2016-09-15 | Historial de versiones de github NOTICIAS v4.4 |
bash-4.4-rc2 | 2016-08-22 | |
bash-4.4-rc1 | 2016-02-24 | |
bash-4.4-beta2 | 2016-07-11 | |
bash-4.4-beta | 2015-10-12 | |
bash-4.3 | 2014-02-26 | |
bash-4.2 | 2011-02-13 | |
bash-4.1 | 2009-12-31 | |
bash-4.0 | 2009-02-20 | |
bash-4.0-rc1 | 2009-01-12 | |
bash-3.2 | 2006-10-11 | |
bash-3.1 | 2005-12-08 | |
bash-3.0 | 2004-08-03 | |
bash-2.05b | 2002-07-17 | |
bash-2.05a | 2001-11-16 | |
bash-2.05 | 2001-04-09 | |
bash-2.04 | 2000-03-21 | |
bash-2.03 | 1999-02-19 | |
bash-2.02 | 1998-04-18 | |
bash-2.01 | 1997-06-05 | |
bash-2.0 | 1996-12-31 |
Ver también
- Comparación de proyectiles de comando
Referencias
- ^ "Índice de / gnu / bash" . ftp.gnu.org . Consultado el 8 de diciembre de 2020 .
- ^ Ramey, Chet (7 de diciembre de 2020). "Versión Bash-5.1 disponible" . listas.gnu.org . Consultado el 8 de diciembre de 2020 .
- ^ "Preguntas frecuentes de Bash, versión 4.14" . Archivado desde el original el 1 de septiembre de 2018 . Consultado el 9 de abril de 2016 .
- ^ "Falta el código fuente - ¿Cumplimiento de la GPL? · Número 107 · Microsoft / WSL" . GitHub . Archivado desde el original el 24 de septiembre de 2019 . Consultado el 8 de julio de 2016 .
- ^ "GNU Bash" . Softpedia . SoftNews. Archivado desde el original el 21 de octubre de 2017 . Consultado el 9 de abril de 2016 .
- ^ Proyecto GNU . "Archivo README" . Archivado desde el original el 26 de abril de 2019 . Consultado el 16 de abril de 2014 .
Bash es software libre, distribuido bajo los términos de la Licencia Pública General [GNU] publicada por la Free Software Foundation, versión 3 de la Licencia (o cualquier versión posterior).
- ^ "bash-1.11" . oldlinux.org .
Consulte test.c para GPL-2.0 o posterior
- ^ "bash-1.05.tar" . oldlinux.org .
- ^ a b c "BashFAQ / 061 - Wiki de Greg" . mywiki.wooledge.org . Archivado desde el original el 2 de marzo de 2021 . Consultado el 1 de marzo de 2021 .
- ^ "¿Hay alguna manera de descargar la fuente bash-0.99 supuestamente inicial?" . unix.stackexchange.com .
- ^ a b c Richard Stallman (enviado con comentarios de Chet Ramey) (10 de febrero de 1988). "GNU + BSD =?" . Grupo de noticias : comp.unix.questions . Usenet: [email protected] . Archivado desde el original el 7 de noviembre de 2012 . Consultado el 22 de marzo de 2011 .
Durante un año y medio, el shell de GNU estuvo "casi terminado". El autor hizo repetidas promesas de cumplir lo que había hecho y nunca las cumplió. Finalmente, ya no podía creer que me entregara algo. Por eso, Brian Fox, miembro del personal de la Fundación, ahora está implementando una imitación del shell Bourne.
- ^ Hamilton, Naomi (30 de mayo de 2008), "The AZ of Programming Languages: BASH / Bourne-Again Shell" , Computerworld : 2, archivado desde el original el 6 de julio de 2011 , recuperado el 21 de marzo de 2011 ,
cuando Richard Stallman decidió Para crear un reemplazo completo para los sistemas Unix entonces gravados, sabía que eventualmente tendría que tener reemplazos para todas las utilidades comunes, especialmente el shell estándar, y esos reemplazos tendrían que tener una licencia aceptable.
- ^ a b Brian Fox (enviado por Leonard H. Tower Jr.) (8 de junio de 1989). "¡Bash está en versión beta!" . Grupo de noticias : gnu.announce . Archivado desde el original el 4 de mayo de 2013 . Consultado el 28 de octubre de 2010 .
- ^ a b Warren, Tom (4 de junio de 2019). "Apple reemplaza bash con zsh como shell predeterminado en macOS Catalina" . The Verge . Archivado desde el original el 10 de junio de 2019 . Consultado el 13 de junio de 2019 .
- ^ "Cómo instalar la herramienta de línea de comandos Bash shell en Windows 10" . 28 de septiembre de 2016. Archivado desde el original el 20 de noviembre de 2016 . Consultado el 20 de noviembre de 2016 .
- ^ "Cambios en las características del entorno de usuario" . Oráculo. Archivado desde el original el 12 de junio de 2018 . Consultado el 8 de junio de 2018 .
- ^ a b Hughes, Matthew (4 de junio de 2019). "¿Por qué macOS Catalina usa Zsh en lugar de Bash? Licencias" . La próxima web . Archivado desde el original el 31 de diciembre de 2020 . Consultado el 12 de enero de 2021 .
- ^ "Casi consigo un editor y compilador de Linux" . Dr. Dobb's . Archivado desde el original el 2 de marzo de 2021 . Consultado el 12 de septiembre de 2020 .
- ^ Richard Stallman (12 de noviembre de 2010). "Sobre el proyecto GNU" . Fundación de Software Libre . Archivado desde el original el 24 de abril de 2011 . Consultado el 13 de marzo de 2011 .
"Bourne Again Shell" es un juego con el nombre Bourne Shell , que era el shell habitual en Unix.
- ^ Gattol, Markus (13 de marzo de 2011), Bourne-again Shell , archivado desde el original el 9 de marzo de 2011 , recuperado el 13 de marzo de 2011 ,
El nombre es un juego de palabras con el nombre de la concha de Bourne (sh), uno de los primeros y importante shell de Unix escrito por Stephen Bourne y distribuido con la versión 7 de Unix alrededor de 1978, y el concepto de "nacer de nuevo".
- ^ Chazelas, Stephane (4 de octubre de 2014). "Archivos de lista de correo oss-sec" . Seclists.org . Archivado desde el original el 6 de octubre de 2014 . Consultado el 4 de octubre de 2014 .
- ^ Leyden, John (24 de septiembre de 2014). "Patch Bash NOW: error 'Shell Shock' explota OS X, sistemas Linux completamente abiertos" . El registro . Archivado desde el original el 16 de octubre de 2014 . Consultado el 25 de septiembre de 2014 .
- ^ Perlroth, Nicole (25 de septiembre de 2014). "Los expertos en seguridad esperan que el error de software 'Shellshock' en Bash sea significativo" . The New York Times . Archivado desde el original el 5 de abril de 2019 . Consultado el 25 de septiembre de 2014 .
- ^ Seltzer, Larry (29 de septiembre de 2014). "Shellshock hace que Heartbleed parezca insignificante" . ZDNet . Archivado desde el original el 14 de mayo de 2016.
- ^ Brian Fox (29 de agosto de 1996), shell.c , Free Software Foundation , archivo del original el 28 de septiembre de 2018 , obtenido el 1 de noviembre de 2010 , fecha de
nacimiento: domingo 10 de enero de 1988. Autor inicial: Brian Fox
- ^ Richard Stallman (3 de octubre de 2010). "Sobre el proyecto GNU" . Fundación de Software Libre . Archivado desde el original el 24 de abril de 2011 . Consultado el 21 de marzo de 2011 .
Los empleados de la Free Software Foundation han escrito y mantenido varios paquetes de software GNU. Dos notables son la biblioteca C y el shell. … Financiamos el desarrollo de estos programas porque el Proyecto GNU no se trataba solo de herramientas o de un entorno de desarrollo. Nuestro objetivo era un sistema operativo completo y estos programas eran necesarios para ese objetivo.
- ^ len (g ... @ prep.ai.mit.edu) (20 de abril de 1993). "Boletín de GNU de enero de 1993" . Grupo de noticias : gnu.announce . Usenet: [email protected] . Archivado desde el original el 2 de marzo de 2021 . Consultado el 28 de octubre de 2010 .
- ^ Ramey, Chet (1 de agosto de 1994). "Bash - el shell GNU (Reflexiones y lecciones aprendidas)" . Diario de Linux . Archivado desde el original el 5 de diciembre de 2008 . Consultado el 13 de noviembre de 2008 .
- ^ Chet Ramey (31 de octubre de 2010), Dates in your Computerworld entrevista , archivado del original el 20 de julio de 2012 , consultado el 31 de octubre de 2010
- ^ Chet Ramey (12 de junio de 1989). "Correcciones y mejoras de Bash 0.99" . Grupo de noticias : gnu.bash.bug . Archivado desde el original el 10 de noviembre de 2012 . Consultado el 1 de noviembre de 2010 .
- ^ Chet Ramey (24 de julio de 1989). "Algunas correcciones de bash-1.02" . Grupo de noticias : gnu.bash.bug . Archivado desde el original el 10 de noviembre de 2012 . Consultado el 30 de octubre de 2010 .
- ^ Brian Fox (2 de marzo de 1990). "Disponibilidad de bash 1.05" . Grupo de noticias : gnu.bash.bug . Archivado desde el original el 10 de noviembre de 2012 . Consultado el 30 de octubre de 2010 .
- ^ Bresnahan, Christine; Blum, Richard (abril de 2015). CompTIA Linux + Powered by Linux Professional Institute Study Guide: Examen LX0-103 y Examen LX0-104 (3.ª ed.). John Wiley & Sons, Inc. pág. 5. ISBN 978-1-119-02122-3. Archivado desde el original el 2 de marzo de 2021 . Consultado el 6 de junio de 2016 .
En Linux, la mayoría de los usuarios ejecutan bash porque es el shell más popular.
- ^ Danesh, Arman; Jang, Michael (febrero de 2006). Dominando Linux . John Wiley & Sons, Inc. pág. 363. ISBN 978-0-7821-5277-7. Archivado desde el original el 2 de marzo de 2021 . Consultado el 6 de junio de 2016 .
Bourne Again Shell (bash) es el shell más común que se instala con las distribuciones de Linux.
- ^ Foster-Johnson, Eric; Welch, John C .; Anderson, Micah (abril de 2005). Comienzo de la secuencia de comandos de Shell . John Wiley & Sons, Inc. pág. 6. ISBN 978-0-7645-9791-6. Archivado desde el original el 2 de marzo de 2021 . Consultado el 6 de junio de 2016 .
Bash es, con mucho, el shell más popular y forma el shell predeterminado en los sistemas Linux y Mac OSX.
- ^ "Utilice zsh como shell predeterminado en su Mac - Soporte de Apple" . Archivado desde el original el 2 de diciembre de 2019 . Consultado el 1 de julio de 2019 .
- ^ "Instalación de los nuevos paquetes GNV" . Archivado desde el original el 3 de octubre de 2020 . Consultado el 4 de septiembre de 2020 .
- ^ "Subsistemas de compatibilidad" . Archivado desde el original el 23 de septiembre de 2020 . Consultado el 4 de septiembre de 2020 .
- ^ Juliana, Cino (10 de junio de 2017). "Estado de salida de Linux bash y cómo establecer el estado de salida en bash - Techolac" . Archivado desde el original el 21 de junio de 2019 . Consultado el 21 de junio de 2019 .
- ^ Huzaifa Sidhpurwala (24 de septiembre de 2014). "Bash ataque de inyección de código de variables de entorno especialmente diseñado" . Red Hat . Archivado desde el original el 25 de septiembre de 2014 . Consultado el 25 de septiembre de 2014 .
- ^ "Manual de referencia de Bash" . www.gnu.org . Archivado desde el original el 15 de marzo de 2018 . Consultado el 27 de marzo de 2018 .
- ^ "Depuración de scripts Bash" . tldp.org . Archivado desde el original el 4 de noviembre de 2018 . Consultado el 20 de noviembre de 2018 .
- ^ "Bash changes [Bash Hackers Wiki (DEV 20200708T2203)]" . wiki-dev.bash-hackers.org . Archivado desde el original el 23 de septiembre de 2019 . Consultado el 23 de septiembre de 2019 .
- ^ "Manual de referencia de Bash" . www.gnu.org . Archivado desde el original el 15 de septiembre de 2019 . Consultado el 15 de septiembre de 2019 .
- ^ "Trabajar de forma más productiva con bash 2.x / 3.x" . www.caliban.org . Archivado desde el original el 29 de junio de 2018 . Consultado el 21 de junio de 2018 .
- ^ "6.11 Bash POSIX Mode" , The GNU Bash Reference Manual, para Bash, versión 4.1 , 23 de diciembre de 2009, archivado desde el original el 3 de diciembre de 2010 , consultado el 26 de octubre de 2010
- ^ "Guía avanzada de Bash-Scripting" . www.tldp.org . Sección 37.2 (Bash, versión 3). Archivado desde el original el 5 de mayo de 2017 . Consultado el 5 de marzo de 2017 .
- ^ "Bash, versión 4" . tldp.org . Archivado desde el original el 1 de julio de 2018 . Consultado el 25 de junio de 2018 .
- ^ "Arrays (Bash Reference Manual)" . www.gnu.org . Archivado desde el original el 11 de julio de 2018 . Consultado el 4 de julio de 2018 .
- ^ "macos - Actualice bash a la versión 4.0 en OSX" . Pregunte diferente . Archivado desde el original el 25 de junio de 2018 . Consultado el 25 de junio de 2018 .
- ^ a b Mendel Cooper. "Problemas de portabilidad" . El proyecto de documentación de Linux . ibiblio.org. Archivado desde el original el 27 de enero de 2012 . Consultado el 26 de enero de 2012 .
- ^ a b "10. Archivos" . Manual de políticas de Debian v4.5.0.2 . Archivado desde el original el 12 de mayo de 2020 . Consultado el 11 de mayo de 2020 .
- ^ "¿Cómo formatear la fecha y la hora en Linux, MacOS y Bash?" . Consejos de Shell! . Archivado desde el original el 3 de junio de 2020 . Consultado el 3 de junio de 2020 .
- ^ - Manual de comandos generales de Linux
- ^ - Manual de comandos generales de Linux
- ^ "Carcasa portátil" . Autoconf . Archivado desde el original el 2 de marzo de 2021 . Consultado el 20 de enero de 2020 .
- ^ "Ayuda de BASH - Un tutorial de Bash" . Hypexr.org. 5 de octubre de 2012. Archivado desde el original el 2 de marzo de 2021 . Consultado el 21 de julio de 2013 .
- ^ "Manual de referencia de Bash" . www.gnu.org . Archivado desde el original el 15 de marzo de 2018 . Consultado el 27 de marzo de 2018 .
- ↑ bashbug (1) Archivado el 2 de octubre de 2018 en Wayback Machine , die.net
- ^ "Comando Linux / Unix: bashbug" Archivado el 6 de octubre de 2014 en Wayback Machine , apple.com
- ^ "Manual de referencia de Bash" . tiswww.case.edu .
- ^ "Trabajar de forma más productiva con bash 2.x / 3.x" . www.caliban.org . Archivado desde el original el 29 de junio de 2018 . Consultado el 21 de junio de 2018 .
- ^ "Índice de / gnu / bash" . ftp.swin.edu.au . Archivado desde el original el 8 de marzo de 2020 . Consultado el 15 de septiembre de 2019 .
- ^ "Historial de versiones de github NOTICIAS v5.0" . GitHub . Archivado desde el original el 10 de septiembre de 2020 . Consultado el 1 de marzo de 2021 .
- ^ "Copia archivada" . Archivado desde el original el 18 de marzo de 2020 . Consultado el 25 de noviembre de 2019 .CS1 maint: copia archivada como título ( enlace )
- ^ "Versión Bash-5.0 disponible" . listas.gnu.org . Archivado desde el original el 8 de noviembre de 2020 . Consultado el 1 de marzo de 2021 .
enlaces externos
- Página web oficial
- Entrevista de 2008 con el mantenedor de GNU Bash, Chet Ramey