sh
является избыточным, если вы намеревались отправлять только escape-последовательности и текст через FIFO. Вы можете сделать только это:
while true; do cat fifo; done
Ответ на ваш вопрос «нет»; использование этого синтаксиса должно выводить сценарий, номер строки и переменную, относящиеся к стандартной ошибке, как вы описываете. Если вы хотите изменить это, направьте стандартную ошибку в процесс, чтобы преобразовать ее в желаемый формат в сценарии, который сам запускает сценарий, выводящий сообщение об ошибке.