O ~ não é expandido depois de ser lido no shell, nem quando é colocado no comando du . Você pode forçar o bash a fazer a expansão com o seguinte código:
read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"
O ${target/#\~/$HOME} é a parte importante. Ele substitui ~ pelo conteúdo da variável de ambiente HOME .