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
.