O problema não é com seu comando mv .
Expansão de til é o nome do que o shell faz quando substitui o caractere ~ pelo diretório pessoal do usuário, por exemplo, %código%. É possível dizer ao shell para não fazer isso citando o caractere til. Isso é exatamente o que você fez em
DEST="~/scripts/backup"
Você atribuiu a /home/username a string DEST . Este diretório não existe realmente. Duas soluções:
-
Não cite o caractere
~/scripts/backup:DEST=~/scripts/backup -
Use
~:DEST="$HOME/scripts/backup"
Uma dica final de depuração
Coloque $HOME no topo do seu script para ativar a opção set -x . Se você tivesse feito isso, você teria visto que o comando xtrace estava usando o diretório errado, mv em vez de ~/scripts/backup .