Você pode usar qualquer sequência não vazia de caracteres que não seja uma nova linha como o delimitador. POSIX não indica qualquer limitação. Você pode especificar uma nova linha no delimitador, mas ela nunca será encontrada. Muitos shells suportam delimitadores vazios, mas o ATT ksh não. Na verdade, a maioria das shells aceita seqüências arbitrárias de bytes diferentes de nulo e de nova linha, mas eu não recomendaria o uso de seqüências de bytes inválidos. Também recomendo não usar caracteres de retorno de carro, pois eles podem ser reencodidos quando o script for editado ou transferido para outra máquina. O espaço em branco à direita também é propenso a ser removido acidentalmente durante a edição. Aderindo ao ASCII imprimível é mais seguro.
É claro que, se o delimitador incluir um caractere que tenha um significado especial na sintaxe do shell, você precisará citá-lo depois do operador <<
e só poderá usar aqui um documento literal, não um aqui -documento com variável e substituição de comandos.