Em primeiro lugar, não existe uma tabulação do tipo Unix ou uma tabulação do tipo Windows. Um caractere de tabulação é o mesmo no Windows e no Unix. O que pode mudar entre editores de texto (não entre sistemas operacionais) é 1. o que acontece quando você pressiona a tecla TAB ou 2. quantos espaços são exibidos quando o editor encontra um caractere de tabulação no código-fonte. Uma regra é definir recuo para o que você gosta (em número de espaços) e manter o tabulação para 8, mas este é outro debate.
Agora, voltemos ao seu código. O problema é o delimitador EMW. Com esta sintaxe sua, a linha EMW não pode ser recuada (seja com espaços ou TABs), deve estar no início de uma linha. Além disso, perde seu status de delimitador heredoc.
Então, uma solução poderia ser:
bash /dev/fd/10 10<<'EOT'
Some command.
cat << EMW >> /etc/apache2/apache2.conf
....
....
EMW
Some other command.
EOT
Note também que o conteúdo de apache2.conf
(simbolizado acima com ....
) não deve ser indentado, ou seria recuado em apache2.conf
também.
Se você quiser recuar todo o código bash, use esta sintaxe:
bash /dev/fd/10 10<<-'EOT'
Some command.
cat << EMW >> /etc/apache2/apache2.conf
....
....
EMW
Some other command.
EOT
Aqui, o espaço inicial usado para recuo é composto de qualquer número do caractere TAB (TAB, não espaço!)
O que eu mudei? Eu mudei 10<<'EOT'
para 10<<-'EOT'
. Essa sintaxe especial pede ao bash para descartar qualquer caractere TAB principal ao analisar um heredoc. O delimitador EMW
pode ser recuado, assim como o conteúdo de apache2.conf
.