Quando você digita CMD="sed -i 's/^host=.*/host=myhost1/' /opt/file.txt" , está usando " (aspas duplas), pedindo ao shell para interpretar caracteres especiais como * .
Ele substituirá .* por uma lista de todos os arquivos no diretório atual que começam com . , o que confunde sed .
Torne o * não-específico com uma barra invertida \* . Também para echo "$CMD" para ver os nomes dos arquivos.