¿Qué hace el comando ":"?

¿Qué hace el comando ":"?

Estaba leyendo algunos comandos enexplicashell.comy encuentra un comando interesante:

:(){ :|:& };:

Actualmente estoy debajo OSXy la única referencia que pude encontrar fue en builtinla página de manual ( man builtin), pero eso no ayudó porque solo dice si es un comando externo, cshell o sh.

       Command       External    csh(1)    sh(1)
       !             No          No        Yes
       %             No          Yes       No
       .             No          No        Yes
       :             No          Yes       Yes

Entonces, ¿qué hace la ejecución :?

En la terminal no tengo salida:

$ :
$

Respuesta1

En este caso, :no es un comando, es el nombre de una función que estás definiendo. El comando :(){ :|:& };:es lo que se llama "forkbomb": es una secuencia de comandos que define una función llamada :, le dice al shell que la función consiste en llamar a :, canalizar la salida a otra instancia de :y poner en segundo plano la segunda instancia. La secuencia final ;:finaliza la definición de la función y luego la llama. Cada llamada a :resulta en :la ejecución de dos copias más, tan rápido como el shell puede generarlas.
Esto provocará que se agoten todos los recursos del sistema, lo que eventualmente provocará que el sistema se ralentice o falle si no se establece un límite de proceso.

Respuesta2

Si ustednoredefinir :, tiene un significado predeterminado como no operativo. Puedes ver su documentación conhelp :

% help :
:: :
    No effect; the command does nothing.  A zero exit code is returned.

Cuenta la leyenda que hace mucho tiempo, en los albores de Internet, esta era una forma de poner texto en los scripts de Shell que no se ejecutaría. En otras palabras, una especie de comentario. No tengo una fuente escrita para esto.

información relacionada