variable tutorial traduccion script read lenguaje bourne again bash unix

traduccion - bash tutorial



¿Cómo funciona esta bomba tenedor bash? (2)

Respuesta corta:

Los dos puntos (":") se convierten en una función, por lo que está ejecutando la función conectada a la función y poniéndola en el fondo, lo que significa que para cada invocación de la función se invocan 2 copias de la función. La recursión se afianza.

Según Wikipedia, la siguiente es una bomba de horquilla bash muy elegante:

:(){ :|:& };:

¿Como funciona?


Rompiéndolo, hay tres grandes piezas:

:() # Defines a function, ":". It takes no arguments. { ... }; # The body of the function. : # Invoke the function ":" that was just defined.

Dentro del cuerpo, la función se invoca dos veces y la tubería está en segundo plano; cada invocación sucesiva en los procesos engendra aún más llamadas a ":". Esto lleva rápidamente a un consumo explosivo en los recursos del sistema, deteniendo las cosas.

Tenga en cuenta que invocarlo una vez, recurrir infinitamente, no sería lo suficientemente bueno, ya que eso provocaría un desbordamiento de la pila en el proceso original, que es desordenado pero se puede solucionar.

Una versión más amigable para los humanos se ve así:

kablammo() { # Declaration kablammo | kablammo& # The problematic body. }; kablammo # End function definition; invoke function.

Editar: El comentario de William a continuación fue una mejor redacción de lo que dije antes, por lo que he editado para incorporar esa sugerencia.