Não é um caso de globbing dar errado, mas quais arquivos estão presentes no diretório:
- Nenhum arquivo
.bakestá presente. Em seguida,*.bak, a menos quenullglobseja definido, seja expandido para*.bak. Portanto, o comando executado é literalmentecp -p fstab *.bak. - Apenas
fstab.bakestá presente. Em seguida,*.bakserá expandido para apenasfstab.bakecp -p fstab fstab.bakserá executado. Isso é o que você parece esperar, independentemente dos arquivos presentes. - Vários arquivos
*.bakestão presentes (por exemplo,fstab.bakeinputrc.bak). Então,cp -p fstab fstab.bak inputrc.baké executado. Nesse caso,cpespera que o último argumento seja um diretório ou que um diretório de destino seja especificado usando-t. Se não, vai reclamar.
Não faça coisas idiotas como cp file *.bak , cujos resultados podem variar com base nos arquivos presentes. Você realmente quer fazer o backup de fstab para iputrc.bak se fstab.bak não estiver presente e inputrc.bak for? Se você está com preguiça de digitar o nome do arquivo, use a expansão de chaves:
cp -p file{,.bak}
Melhor ainda, use o controle de versão e etckeeper em vez do frágil .bak -copying.