1) for file; do faz um loop sobre os parâmetros posicionais, ou seja, argumentos de linha de comando para o script. Use for file in *; do para percorrer os arquivos no diretório (ou _* para obter apenas aqueles com um prefixo de sublinhado).
2) Você pode usar ${file#_} em vez de ${file//_/} para remover o sublinhado do início do nome do arquivo. ${par#word} remove especificamente uma parte do começo, e é um recurso padrão, ao contrário de ${par/pat/repl} . E é claro que ${file//_} removeria as barras all (desde que você usou uma barra dupla), não apenas a primeira.
3) pelo menos no Linux (GNU userland) e no FreeBSD, você pode usar mv -n para solicitar que ele não sobrescreva nenhum arquivo. Apenas no caso.
Então,
for file in _*; do
mv -n -- "$file" "${file#_}"
done