O delimitador here doc tem que ser uma linha delimitada no alias em zsh
(parece um bug quando você adiciona aquele delimitador quando pressiona enter), então:
alias runthing='cd; date << HERE
date
HERE
'
Aqui, usar um alias está errado. Considere por exemplo:
echo foo || runthing
Porque alias
é apenas uma forma de substituição de texto em código (aliases é antes de todo recurso csh, csh não tinha funções), que se torna
echo foo || cd; date...
O que significa que date
seria executado mesmo que echo
tenha sido bem-sucedido.
É melhor você usar uma função aqui:
runthing() {
cd && date << EOF
date
EOF
}
(claro, faz pouco sentido alimentar um heredoc para date
dado que date
não lê seu stdin, eu apenas suponho, foi apenas para o exemplo).