¿Qué significa la sintaxis bash <<?

10

Ruby Version Manager (RVM) instalado así:

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Entiendo lo que primero <significa (alimenta el script bash al intérprete bash), estoy confundido con <(...)parte. Entonces, qué paréntesis hacen aquí y menos que signo. ¿En qué casos podemos usar la misma sintaxis?

Traté de excavar en Internet, encontré esta pregunta SO /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces y esta pregunta en ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Pero aún no tengo idea de por qué usamos esos paréntesis y por qué usamos la redirección de entrada dos veces.

bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer

no es lo mismo?

Gracias.

Nemoden
fuente
Creo que las mejores preguntas son: ¿Por qué es lo mismobash <(curl -s ...)
Bruno Bronosky
El comando <(...) funciona cuando el comando acepta un nombre de archivo en esa ubicación. Si coloca otro <antes, el comando debe aceptar la entrada de stdin. Algunos comandos funcionarán de cualquier manera y usarán stdin si no se proporciona un nombre de archivo. La respuesta aceptada insinúa esta diferencia.
Lee Meador

Respuestas:

7

Es la sustitución del proceso . Alimenta la salida del comando en un FIFO que puede leerse como un archivo normal.

Ignacio Vazquez-Abrams
fuente
5

Significa "ejecutar el comando dentro de los corchetes y devolver aquí un nombre de archivo que represente la salida estándar de ese comando".

Entonces, eso se traduce en dos comandos:

curl ... > something
bash -s stable < something

... donde "algo" es la magia. (Típicamente, /dev/fd/...o una tubería).

Daniel Pittman
fuente
3
pero ¿por qué no puedo usar curl ... | bash -s estable?
Lilás