Бачити "Розбиту трубу" в цій ситуації рідко, але нормально.
Під час запуску type rvm | head -1bash виконується type rvmв одному процесі, head -1в іншому. 1 Виділення typeз’єднане з кінцем труби "записувати" , а з head"зчитувати" - "зчитувати". Обидва процеси працюють одночасно.
head -1Процес зчитує дані зі стандартного вводу (зазвичай в шматки 8 КБ), вивести в одному рядку ( в відповідності з -1параметром), і виходи, в результаті чого «читати» кінець труби повинен бути закритий. Оскільки rvmфункція досить довга (близько 11 кБ після розбору та реконструкції bash), це означає, що вона headвиходить, поки typeзалишається кілька кБ даних, щоб виписати.
З цього моменту, оскільки typeнамагається записати в трубу, інший кінець якої закритий - зламана труба - функція write (), яку вона викликала, поверне помилку EPIPE, перекладену як "Розбита труба". Крім цієї помилки, ядро також передає сигнал SIGPIPE type, який за замовчуванням вбиває процес негайно.
(Сигнал дуже корисний в інтерактивних оболонках, оскільки більшість користувачів не хочуть, щоб перший процес продовжував працювати і намагався писати в нікуди. Тим часом, неінтерактивні сервіси ігнорують SIGPIPE - це не було б добре для довгого демона, щоб померти від такої простої помилки - тому вони вважають код помилки дуже корисним.)
Однак подача сигналу не є на 100% негайною, і можуть бути випадки, коли write () повертає EPIPE, і процес продовжує тривати ненадовго до отримання сигналу. У цьому випадку typeотримує достатньо часу, щоб помітити невдале записування, перекласти код помилки і навіть надрукувати повідомлення про помилку в stderr, перш ніж його вбити SIGPIPE. (Повідомлення про помилку говорить "-bash: type:" оскільки typeце сама вбудована команда bash.)
Це, мабуть, частіше зустрічається в системах з декількома процесорами, оскільки typeпроцес і код доставки сигналу ядра можуть працювати на різних ядрах, буквально одночасно.
Можна було б видалити це повідомлення, виправляючи typeвбудований (у вихідному коді bash) негайний вихід, коли він отримує EPIPE від функції write ().
Однак це нічого не турбує, і це rvmніяк не пов'язане з вашою установкою.