Um ponto-e-vírgula ou e comercial ( ;
ou &
) em um script de shell é um terminador de comando. Você não pode usá-lo se não seguir um comando. ;
significa "executar o comando anterior em primeiro plano" e &
significa "executar o comando anterior em segundo plano".
Uma nova linha em um script de shell é um terminador de comando "fraco". Se houver um comando para terminar, é equivalente a um ponto e vírgula. Se não houver comando para finalizar, a nova linha não terá efeito.
A nova linha após cat <<EOT >> /home/$user/public_html/.htaccess
termina o comando cat …
. Então o ponto e vírgula após o documento aqui não tem nada para terminar. (Um documento aqui não é um comando; o documento aqui é anexado ao comando na linha anterior, ou seja, o comando cat …
.) Se você quisesse encerrar explicitamente o comando cat …
com um ponto-e-vírgula, você precisa colocá-lo no final da linha cat …
.