A resposta fácil é porque o ksh é escrito dessa maneira (e o bash é compatível). Mas há uma razão para essa escolha de design.
A maioria dos comandos espera entrada de texto. No mundo unix, um arquivo de texto consiste em uma seqüência de linhas, cada uma terminando em uma nova linha . Portanto, na maioria dos casos, é necessária uma nova linha final. Um caso especialmente comum é capturar a saída de um comando com um comando susbtitution, processá-lo de alguma forma e depois passá-lo para outro comando. A substituição do comando retira as novas linhas finais; <<<
coloca um de volta.
tmp=$(foo)
tmp=${tmp//hello/world}
tmp=${tmp#prefix}
bar <<<$tmp
O Bash e o ksh não podem manipular dados binários de qualquer maneira (ele não pode lidar com caracteres nulos), portanto, não é surpreendente que suas instalações sejam voltadas para dados de texto.
A sintaxe <<<
here-string é principalmente apenas por conveniência, como <<
here-documents. Se você não precisar adicionar uma nova linha final, use echo -n
(no bash) ou printf
e um pipeline.