Ver "tubería rota" en esta situación es raro, pero normal.
Cuando ejecuta type rvm | head -1, bash se ejecuta type rvmen un proceso, head -1en otro. 1 El stdout de typeestá conectado al extremo de "escritura" de una tubería , el stdin de headal extremo de "lectura". Ambos procesos se ejecutan al mismo tiempo.
El head -1proceso lee los datos de la entrada estándar (generalmente en fragmentos de 8 kB), imprime una sola línea (según la -1opción) y sale, haciendo que se cierre el extremo "leído" de la tubería. Dado que la rvmfunción es bastante larga (alrededor de 11 kB después de ser analizada y reconstruida por bash), esto significa que las headsalidas typeaún tienen unos pocos kB de datos para escribir.
En este punto, dado que typeestá intentando escribir en una tubería cuyo otro extremo se ha cerrado (una tubería rota ), la función write () que solicitó devolverá un error EPIPE, traducido como "tubería rota". Además de este error, el núcleo también envía la señal SIGPIPE a type, que por defecto mata el proceso de inmediato.
(La señal es muy útil en shells interactivos, ya que la mayoría de los usuarios no quieren que el primer proceso continúe ejecutándose e intenten escribir en ninguna parte. Mientras tanto, los servicios no interactivos ignoran SIGPIPE; no sería bueno para un demonio de larga ejecución). morir en un error tan simple, por lo que encuentran el código de error muy útil).
Sin embargo, la entrega de la señal no es 100% inmediata, y puede haber casos en los que write () devuelve EPIPE y el proceso continúa ejecutándose por un corto tiempo antes de recibir la señal. En este caso, typeobtiene suficiente tiempo para notar la escritura fallida, traducir el código de error e incluso imprimir un mensaje de error en stderr antes de que SIGPIPE lo elimine. (El mensaje de error dice "-bash: type:" ya que typees un comando incorporado de bash).
Esto parece ser más común en sistemas con múltiples CPU, ya que el typeproceso y el código de entrega de señal del núcleo pueden ejecutarse en diferentes núcleos, literalmente al mismo tiempo.
Sería posible eliminar este mensaje parcheando el typeincorporado (en el código fuente de bash) para salir inmediatamente cuando recibe un EPIPE de la función write ().
Sin embargo, no hay nada de qué preocuparse, y no está relacionado con su rvminstalación de ninguna manera.