Quando você corre
test="-efoo"; echo ${test:0:2}
echo é executado com o argumento -e , que em algumas implementações echo , incluindo o comando echo builtin da maioria das implementações bash , é uma opção válida e, portanto, é "engolida".
test="-efoo"; printf %s\n "${test:0:2}"