Ele abre a manipulação incorreta de SIGPIPE . head e também dd fecharão o pipe quando receberem seus 5 MB. Isso produz um erro EPIPE na chamada do sistema write() quando o processo openssl tenta gravar no canal:
EPIPE fd is connected to a pipe or socket whose reading end is closed. When this happens the writing process will also receive a SIGPIPE signal.
openssl então morreu devido a um sinal ao invés de sair normalmente. Você pode verificar isso em seu exemplo usando:
$ openssl enc -aes-256-ctr -pass pass:password -nosalt < /dev/zero | head -c 5M >file
error writing output file
$ echo ${PIPESTATUS[@]}
1 0
A matriz $PIPESTATUS contém os valores de saída dos processos nos pipes. Você vê o processo openssl encerrado com o código de saída 1.
No entanto, para superar esse erro, use head ou dd antes do openssl no canal:
$ head -c 5M /dev/zero | openssl enc -aes-256-ctr -pass pass:password -nosalt >file
$ echo ${PIPESTATUS[@]}
0 0