Aqui-Documento é um tipo de redirecionamento de shell, então o shell executará como redirecionamento normal, do começo ao fim (ou da esquerda para a direita, ou ordem de aparição). Isso é definido pelo POSIX:
If more than one redirection operator is specified with a command, the order of evaluation is from beginning to end.
Em seu comando, cat
executará > conf
primeiro, abrirá e truncará o arquivo conf
para gravação e, em seguida, lerá os dados de Here-Document
.
Usando strace
, você pode verificar:
$ strace -f -e trace=open,dup2 sh -c 'cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
'
...
open("conf", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1) = 1
dup2(3, 0) = 0
...